为什么输出包含4个时间0,所以一次又一次地进行主调用,直到条件变为false为止,然后应从if块退出。
#include <stdio.h>
int main()
{
static int i=5;
if(--i)
{
main();
printf("%d ",i);
}
}
答案 0 :(得分:0)
请注意以下事项。
int i
是静态的。
您正在递归呼叫main
。
在if
条件下,您要预先减少i
每次调用main时,i
的值将与上一次调用相同。因此i
每次都会递减。由于这是--i
,因此第一次是4,然后转到0。
最里面的main函数返回(i==0
)之后,将执行之前的main函数的printf
。
但是i
是静态的,其值为0
。这样,您为每个主要功能打印了四个零。