#include <stdio.h>
int main() {
static int i = 5;
if (--i) {
main();
printf("%d ", i);
}
}
输出
0 0 0 0
我想知道在这个程序中如何执行printf
。
答案 0 :(得分:5)
嗯,i
是静态的,意味着在{strong>所有调用main
之间共享。
您永远不会在i
降至0
之前打印任何内容,并且由于i
在打印时共享给所有来电,所有来电都会看到相同的值:{{1} }
0
i=5 if(4) main()
i=4 if(4) main()
i=3 if(2) main()
现在。所有其他调用都将看到此值。 Resursions停止i=0
因为print 0
是静态的i
因为print 0
是静态的i
因为print 0
是静态的要了解我认为在递归调用之前打印的内容如下:
i
答案 1 :(得分:1)
您需要将printf("%d ",i);
置于main()
的内部呼叫之上。
你在这里冰凉:
如果遗失,则会在return 0;
的末尾插入隐式main
。
您可以在C中自行呼叫main
;在C ++中,行为是未定义的。