ボンジュール・マドモアゼル

本サイトの情報は自己責任にてご利用下さい。

[C++] 部分式の評価順序

 
C++ の理解し難い仕様。

部分式の評価順序は定義されていないのだと。

「プログラミング言語C++ 第2版」
3.2.2  評価順序
式の中で部分式を評価する順序は定義されていない。

int i = 1;
v[i] = i++;

は、 v[1]=1 と評価されるかもしれないし、v[2]=1 かもしれない。


「プログラミング言語C++ 第3版」
6.2.2  評価の順序
 式の内部に含まれている下位式の評価の順番は定義されていない。特に式が左から右へ評価されることを前提としてコードを書いてはならない。
引用はしなかったが、括弧を使えば強制的に評価順序を指定できるとあるので早速、
((cout << to_hex(n)) << " ") << to_hex(m) << endl;
としてみたが、相変わらず、to_hex(m) から評価されてしまう。。(コンパイラはgcc version 3.4.4)
<<実行結果が異なるぞ | ホーム | プログラミング言語C++ 第3版 意訳>>

コメント

コメントの投稿

管理者にだけ表示を許可する

画像の文字を半角数字で下記ボックスに記入ください。
文字が読みにくい場合はブラウザの更新をすると新しい文字列が表示されます。