#include <stdio.h>
int main()
{
static int i = 5;
if(--i){
main();
printf("%d,", i);
}
return 0;
}
我无法找到每次i
的值变为0的原因。
答案 0 :(得分:3)
代码中有一个recursive call到main()
,直到if(--i)
没有达到0. print语句没有机会执行。
一旦i
变为零,控件返回,i
的值为,0,则为。
[我现在没有照片编辑器,对不起] ,
尝试查看粗略的图形以获得想法。
FWIW,i
正在拥有static
存储空间,因此在函数调用中持有值。
(我认为最后一部分已被理解,只是为了清楚起见而添加。)
答案 1 :(得分:3)
这是你的程序的执行和价值观:
i = 5; --i; main ()// i==4
i = 4; --i; main ()// i==3
i = 3; --i; main ()// i==2
i = 2; --i; main ()// i==1
i = 1; --i; // i == 0 ,main is not called!
然后程序才会从递归回来:
printf("%d,", i);