gpt4 book ai didi

c - 是 return main();一个有效的语法?

转载 作者:太空狗 更新时间:2023-10-29 15:54:31 25 4
gpt4 key购买 nike

我发现了一些有趣的代码行:

#include <stdio.h>

int main()
{
printf("Hi there");
return main();
}

它编译正常(VS2013),但由于对 main() 的递归调用而导致 stackoverflow 错误。我不知道 return 语句接受任何可以评估为预期返回数据类型的参数,在这个例子中甚至是 int main()

标准 C 或 Microsoft-ish 行为?

最佳答案

I didn't know that the return statement accepts any parameter that can be evaluated to the expected return data type,

好吧,return 语句可以有一个表达式。

引用 C11 标准,第 6.8.6.4 章,return 语句

If a return statement with an expression is executed, the value of the expression is returned to the caller as the value of the function call expression.

因此,在 return main(); 的情况下,main(); 函数调用是表达式

关于 return main(); 的行为,它的行为就像一个普通的递归函数,异常(exception)是在这种情况下的无限递归。

Standard C or Microsoft-ish behaviour?

只要考虑C标准,对main()的递归调用不做任何限制

但是,FWIW,AFAIK,在 C++ 中,这是不允许的。

关于c - 是 return main();一个有效的语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30865922/

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