为什么输出中包含4个时间0?

时间:2019-09-17 07:41:08

标签: c

为什么输出包含4个时间0,所以一次又一次地进行主调用,直到条件变为false为止,然后应从if块退出。

#include <stdio.h>
    int main()
    {
        static int i=5;
        if(--i)
        {           
            main();
            printf("%d ",i);
        }
    }

1 个答案:

答案 0 :(得分:0)

请注意以下事项。

  1. int i是静态的。

  2. 您正在递归呼叫main

  3. if条件下,您要预先减少i

每次调用main时,i的值将与上一次调用相同。因此i每次都会递减。由于这是--i,因此第一次是4,然后转到0。

最里面的main函数返回(i==0)之后,将执行之前的main函数的printf

但是i是静态的,其值为0。这样,您为每个主要功能打印了四个零。