Hello world 加密对 main 的递归调用

Hello world encryption recursive call to main

我发现一个代码很奇怪,我说是因为对 main 进行递归调用,这对我来说是新事物,因此我要求提供有关它的信息,最重要的是,我想要详细解释用于打印hello world,如果不是太麻烦的话。程序如下:

#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;    
}

感谢

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

输出为"hola mundo!!"

关键字符串是

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

相同
"[=11=]!!odnum aloh"

移动一个字符(即用 i 代替 hp 代替 o,等等。 ), 即:

"\x1\"\"peovn!bmpi"

然后,

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

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

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