这是我的示例代码:
int main()
{
static int i = 5;
if(--i)
{
main();
printf("%d ",i);
}
}
为什么打印
0 0 0 0
?为什么循环不是无限的?这个问题是从geeksforgeeks提起的。 最佳答案
main
自身将被调用4次,而i
将被反复递减。由于i
是static
,因此对i
的所有调用都使用相同的main
。
在阻止递归之前,什么都不会输出到控制台。届时i
为零。
顺便说一句,在C中,main
调用自身的行为是未定义的,尽管在C中是允许的。如果您使用的是C ++编译器,请确保将编译器标志切换为C。
关于c - 在下面的示例中,为什么循环没有无限运行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35404874/