【发布时间】:2013-08-24 14:17:31
【问题描述】:
直到i 的值保持大于0,main() 才会被递归调用。一旦它变成0,就违反了 if 条件。任何人都告诉我打印语句是如何执行的。当我运行它时,我得到了输出0000。谢谢
void main()
{
static int i=5;
if(--i)
{
main();
printf("%d",i);
}
}
【问题讨论】:
直到i 的值保持大于0,main() 才会被递归调用。一旦它变成0,就违反了 if 条件。任何人都告诉我打印语句是如何执行的。当我运行它时,我得到了输出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,所以它对函数的所有调用都是通用的。
【讨论】:
本地静态变量将存储最新修改的值。因为你递归调用main(),static i会从4变为0,当i变为0后,它会停止调用main()并返回上一级,然后printf 0(i现在为0)。
【讨论】: