Hello世界加密递归调用main

时间:2015-03-24 20:16:02

标签: c recursion main

我发现代码比较奇怪,我说因为对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;    
}

THX

1 个答案:

答案 0 :(得分:3)

以递归方式调用main是完全合法的。

输出为"hola mundo!!"

密钥字符串是

"\x1\x22\x22\x70\x65\x6f\x76\x6e\x21\x62\x6d\x70\x69"

相同
"\0!!odnum aloh"

移动一个字符(即使用i代替hp代替o等,即:< / p>

"\x1\"\"peovn!bmpi"

然后,

(*("\x1\x22\x22\x70\x65\x6f\x76\x6e\x21\x62\x6d\x70\x69" + i--)

相同
"\x1\"\"peovn!bmpi"[i--]

所以每个putchar输出一个字符串减去一个字符,从右到左。