3

の値がi0 より大きいままになるまで、main()が再帰的に呼び出されます。0if条件違反になると。print ステートメントがどのように実行されるか教えてください。実行すると、出力が得られます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 に答える