cout の事後インクリメントの予測できない動作
このコード スニペットは、cout オブジェクトで使用した場合の事後インクリメント操作のあいまいな動作を示しています。 。最初の例:
<code class="cpp">int i = 5; cout << i++ << i-- << ++i << --i << i << endl;</code>
出力「45555」は、同じ式内で後置インクリメント演算子を使用するときに変数 'i' の副作用をシーケンスすることによって引き起こされる未定義の動作により生成されます。 。 C 標準によれば:
2 番目の例:
<code class="cpp">int x = 20, y = 35; x = y++ + y + x++ + y++;</code>
結果、 「126 37」は、この未定義の動作を具体的に示したものです。結果はコンパイラの実装、環境、さらには評価の順序によっても異なる場合があることに注意してください。
この曖昧さは、複雑な式で使用される場合のポストインクリメント演算の予測不可能性を理解することの重要性を強調しています。特に複数の副作用を伴います。未定義の動作を回避するには、インクリメントを独立したステートメントに分割するか、後置インクリメント演算子の代わりに前置インクリメント演算子を使用することをお勧めします。
以上がポストインクリメントが cout で予測不可能な動作を引き起こすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。