在i
的值保持大于0之前,递归调用main()
。一旦变为0
,则违反if条件。任何人都告诉我如何执行print语句。当我运行它时,我得到输出0000
。感谢
void main()
{
static int i=5;
if(--i)
{
main();
printf("%d",i);
}
}
答案 0 :(得分:7)
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
,因此对所有函数调用都很常见。
答案 1 :(得分:0)
本地静态变量将存储最新的修改值。因为你以递归方式调用main(),static i
将从4变为0,在我变为0之后,它将停止调用main()并返回到上一级,然后printf 0(我现在为0)。 / p>