#include <stdlib.h>
#include <stdio.h>
int main()
{
static int i = 5;
if(--i){
main();
printf("%d ",i);
}
return 0;
}
上面代码的输出是 0 0 0 0。我一开始就明白为什么是 0,但是为什么 0 又打印了三次呢?
最佳答案
回想一下,static
变量在对 main
的所有调用之间共享。然后考虑递归执行的代码:
int main() {
static int i = 5; // 5
if (--i) { // 4
main() {
if (--i) { // 3
main() {
if (--i) { // 2
main() {
if (--i) { // 1
main() {
if (--i) // 0 (false)
return 0;
}
printf("%d ",i); // 0
}
return 0;
}
printf("%d ",i); // 0
}
return 0;
}
printf("%d ",i); // 0
}
return 0;
}
printf("%d ",i); // 0
}
return 0;
}
关于c - 这个程序是如何执行的呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53796298/