Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
直到 的值i仍然大于 0main()才被递归调用。一旦变成0if条件就被违反了。任何人都告诉我打印语句是如何执行的。当我运行它时,我得到了输出0000。谢谢
i
main()
0
0000
void main() { static int i=5; if(--i) { main(); printf("%d",i); } }
i = 4 call main() i = 3 call main() i=2 call main() i=1 call main() i=0 print 0 print 0 print 0 print 0
请记住,i所以static它对函数的所有调用都是通用的。
static
本地静态变量将存储最新修改的值。因为你递归调用main(),static i会从4变成0,当i变成0后,它会停止调用main(),返回上一级,然后printf 0(i现在是0)。
static i