1

次の式が0と評価されるのはなぜですか?

i > --i

i = 5と仮定します。式を左から右に評価すると、左のオペランド(i)を評価して5を取得し、右のオペランド(--i)を評価して4を取得します。 gccでコンパイルして実行すると、常に0と評価されます。思考プロセスに欠陥はありますか?

4

1 に答える 1

11

の値を変更し、シーケンスポイントを介さずに読み取るため、これは単に未定義の動作です。i関係演算子は、シーケンスポイントを導入<しません。

C11、6.5(2)から:

スカラーオブジェクトの副作用が、同じスカラーオブジェクトの異なる副作用、または同じスカラーオブジェクトの値を使用した値の計算に比べて順序付けされていない場合、動作は定義されていません。

于 2012-05-12T23:05:44.240 に答える