0

このスニペットの理由:

int i = 0;
cout << ++i << " " << ++i;

2 2代わりに生成し1 2ますか?

編集:未定義の評価順序に関する回答へのポインターは、この問題を解決しません。cout << ++i << " " << ++iに変換された場合f (++i, " ", ++i)、関連するケースは 2 つだけのようです。

  1. 1 番目のパラメーターは 3 番目のパラメーターの前に評価されます。f (0, " ", 1)
  2. 3 番目のパラメーターは、1 番目のパラメーターの前に評価されます。f (1, " ", 0)

どこ2 2から来ていますか?

編集:わかりました。「前のシーケンス ポイントと次のシーケンス ポイントの間で、オブジェクトは格納された値を式の評価によって最大 1 回変更する必要があります」。

4

1 に答える 1