9

新しい c++11 標準では、シーケンス ポイントの記述方法が変更されたので、c++03 と c++11 の間で何が変更されたのかを正確に調べようとしています。

特に、同じように見えるコードが c++11 ではシーケンス ポイントを持ち、c++03 では持たないような状況はありますか?

4

2 に答える 2

9

C++11 にはシーケンス ポイントはなく、シーケンスの前とシーケンスの後にリレーションがあります。

C++03 と C++11 で動作が異なるいくつかの簡単な例を次に示します。

int x = 10;
++++x; // well defined in C++11

int x = 10;
x = ++x +1; //well defined in C++11

なんで?この回答と関連するスレッドを見てください。

于 2012-02-15T12:46:54.030 に答える
4

最もよく知られている例は、プレインクリメント演算子だと思います。

int i = 0;
++ ++ ++ i;

C++03 では、これは UB であり、C++11 では、各代入は次の評価の前に順序付けられます。

標準の違いを検索するのは困難です。なぜなら、彼らは「シーケンス ポイント」という用語を取り除き、「前に順序付け」などを優先し、ルールの多くをゼロから書き直したからです。

于 2012-02-15T12:46:18.157 に答える