我正在尝试执行以下代码,这是 1988 年 Obfuscated C Code Contest 的参赛作品。
#define _ -F<00||--F-OO--;
int F=00,OO=00;main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()
{
_-_-_-_
_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_
_-_-_-_
}
根据条目描述,此代码通过查看其自身区域来计算 pi。我在不更改代码的情况下成功编译了它。但是当我执行时,它给了我一个 0.25 的值,我期望的是 3.14。代码描述说它在 K&R C 中,如果没有一些更改,它在 ANSI C 中不能正常工作。我想我必须做这些修改才能正确执行它。我以前没有任何使用 K&R C 的经验。所以有人可以帮我将上面的代码更改为 ANSI C 或指出问题所在。我正在使用 Microsoft Visual Studio 2008 来执行此操作。