6

(++i)++未定義の動作ですか?後置インクリメントのインクリメントされたオブジェクトを取得した後に、前置インクリメントの副作用が発生する可能性はありますか? それは私には奇妙に思えるでしょう。

私の直感では、これは C++03 では定義されていませんが、C++11 では明確に定義されています。私は正しいですか?

4

2 に答える 2

11

私の直感では、これはC ++ 03では定義されておらず、C++0xでは明確に定義されています。

はい、その通りです。i2つのシーケンスポイント間で複数回変更しようとしているため、C++03では動作が定義されていません。

(++i)++と同等であるため、動作はC++0xで明確に定義されてい(i += 1)++ます。+=演算子の副作用は++(インクリメント後)に関連して順序付けられているため、動作は明確に定義されています。

于 2010-12-03T15:50:51.537 に答える
-1

iは 2 つのシーケンス ポイント間で複数回変更されているため、これは未定義の動作です。

于 2012-03-06T05:55:26.980 に答える