1

Cプログラムを実行し、さまざまなCコンパイラでさまざまな出力を取得しました。以下は私のプログラムです

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

on boarnland c ++ complier o / p is

45545

そしてgccでその

45555

それは本当にコンパイラに依存するのか、それともOSに依存するのか?

関数呼び出しの引数は、左から右にスタックにプッシュされます。評価は、スタックからポップアウトすることによって行われます。評価は右から左で行われるため、結果が得られます。

4

1 に答える 1

5

関数の引数に対する副作用の実行順序に依存することはできません。この場合、2つのコンパイラは異なる順序で副作用を実行し、異なる結果を生成します。

于 2011-02-25T09:37:33.663 に答える