print语句如何在这里执行四次?

时间:2013-08-22 01:56:16

标签: c recursion static

i的值保持大于0之前,递归调用main()。一旦变为0,则违反if条件。任何人都告诉我如何执行print语句。当我运行它时,我得到输出0000。感谢

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

2 个答案:

答案 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

请记住istatic,因此对所有函数调用都很常见。

答案 1 :(得分:0)

本地静态变量将存储最新的修改值。因为你以递归方式调用main(),static i将从4变为0,在我变为0之后,它将停止调用main()并返回到上一级,然后printf 0(我现在为0)。 / p>