3

直到 的值i仍然大于 0main()才被递归调用。一旦变成0if条件就被违反了。任何人都告诉我打印语句是如何执行的。当我运行它时,我得到了输出0000。谢谢

void main()
{
    static int i=5;
    if(--i)
    {
        main();
        printf("%d",i);
    }
}
4

2 回答 2

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它对函数的所有调用都是通用的。

于 2013-08-22T01:58:30.157 回答
0

本地静态变量将存储最新修改的值。因为你递归调用main(),static i会从4变成0,当i变成0后,它会停止调用main(),返回上一级,然后printf 0(i现在是0)。

于 2013-08-22T03:23:11.883 回答