2017-02-24 8 views
0

単一の変数を同じ変数を複数回更新して印刷する場合、私は変な順序で更新を取得しています。そのような更新がどのように行われるのか誰でも説明できますか?単一変数の単一変数に対する複数の更新の順序

int value = 2; 
cout << value << value++ << ++value << endl; // 434 
value = 2; 
cout << ++value << value++ << value << endl; // 424 
value = 2; 
cout << value++ << value++ << ++value << endl; // 435 
value = 2; 
cout << ++value << value++ << value++ << endl; // 532 
+1

これは未定義の動作です。 – Klaus

答えて

0

1つのステートメント内の式が実行される順序は未定義です。明らかに、括弧または実行順序の規則によって指定されていない限り。例:

int a[3]{}; 
int i=1; 
a[i] = i++; //undefined if a[1] or a[2] 

このコードの動作は定義されておらず、使用されているコンパイラとプラットフォームによって異なります。言うまでもなく、このコードの特定の動作に頼るべきではありません。

関連する問題