【发布时间】:2015-03-24 20:16:02
【问题描述】:
我发现了一段很奇怪的代码,我说这是因为对 main 进行了递归调用,这对我来说是新事物,因此我询问有关它的信息,最重要的是我想详细说明用于打印 hello 的方法世界,如果不是太麻烦的话。程序如下:
#include <stdio.h>
int main(void)
{
static int i = 0xc;
putchar(*("\x1\x22\x22\x70\x65\x6f\x76\x6e\x21\x62\x6d\x70\x69" + i--) - 1);
return i ? main() : 0;
}
谢谢
【问题讨论】:
-
没有任何实际用途的技巧编程。代码有效,你有什么问题?
-
我认为作者是懦弱的。他忘记使用
return i && main();完成面条烘焙。关于实际问题,创建一些临时变量并在调试器中单步执行此单行。它的工作原理将变得显而易见。 -
不要试图理解该代码是如何工作的......只是忘记了。学习编写可理解的代码:-)