这是我的示例代码:

int main()
{
    static int i = 5;
    if(--i)
    {
        main();
        printf("%d ",i);
    }
}


为什么打印0 0 0 0?为什么循环不是无限的?这个问题是从geeksforgeeks提起的。

最佳答案

main自身将被调用4次,而i将被反复递减。由于istatic,因此对i的所有调用都使用相同的main

在阻止递归之前,什么都不会输出到控制台。届时i为零。

顺便说一句,在C中,main调用自身的行为是未定义的,尽管在C中是允许的。如果您使用的是C ++编译器,请确保将编译器标志切换为C。

关于c - 在下面的示例中,为什么循环没有无限运行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35404874/

10-13 08:15
查看更多