Amb*_*ika -2 c recursion printf
#include <stdio.h>
int main() {
static int i = 5;
if (--i) {
main();
printf("%d ", i);
}
}
Run Code Online (Sandbox Code Playgroud)
输出是
0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我想知道printf这个程序是如何执行的.
嗯,i是静态意义,在所有调用之间共享main.
之前你从来没有打印任何东西,i下到0既然i是共享的,在打印的所有调用同一个值的点所有呼叫:0
i=5 if(4) main()
i=4 if(4) main()
i=3 if(2) main()
i=0现在.所有其他调用都将看到此值.恢复停止print 0原因i是静态的print 0原因i是静态的print 0原因i是静态的在递归调用之前看看我认为你期望打印的内容如下:
int main() {
static int i = 5;
if (--i) {
printf("%d ", i);
main();
}
}
Run Code Online (Sandbox Code Playgroud)