gpt4 book ai didi

c - Hello world 加密对 main 的递归调用

转载 作者:太空宇宙 更新时间:2023-11-04 01:59:25 24 4
gpt4 key购买 nike

我发现一段代码很奇怪,我说那是因为对 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;
}

谢谢

最佳答案

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

输出是 "hola mundo!!"

关键字符串是

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

相同
"\0!!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 从右到左输出字符串的一个字符减一。

关于c - Hello world 加密对 main 的递归调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29242036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com