【发布时间】:2020-10-17 22:28:14
【问题描述】:
#include<stdio.h>
int main()
{
static int s;
++s;
printf("%d",s);
if(s<=3)
main();
printf("%d",s);
}
我得到了输出12344444,但只需要12344。谁能解释一下为什么会出现这个问题并提供解决方案?
【问题讨论】:
-
最后一个
printf语句将在递归展开时执行多次。毕竟,您多次致电main。 -
调用 main() 不是未定义的行为吗?
-
递归调用
main其实是违法的。 -
@john 仅在 C++? C 标准没有提到这一点。
-
@John - 不正确,尽管在 C++ 中就是这种情况。这两种语言之间的另一个区别。