ホームページ > バックエンド開発 > C++ > C では std::cout 引数の評価順序が予測できないのはなぜですか?

C では std::cout 引数の評価順序が予測できないのはなぜですか?

Susan Sarandon
リリース: 2024-12-26 15:46:26
オリジナル
354 人が閲覧しました

Why is std::cout Argument Evaluation Order Unpredictable in C  ?

std::cout 挿入順序での引数の評価

C では、 std::cout 挿入を使用した式内の引数評価の順序オペレーターは混乱する可能性があります。次のコード スニペットを考えてみましょう:

このコードの出力は驚くべきものです:

この出力を理解するには、引数の評価の順序を詳しく調べる必要があります。

未指定の評価順序

通常、C では評価順序を指定しません。式内の引数の評価順序。これはコンパイラが決定します。ただし、次のような例外もあります。

  • && や || などの特定の演算子によって導入されるシーケンス ポイント
  • 三項演算子

左から右の評価仮定

std::cout の挿入では左から右への評価を想定するのが一般的ですが、これは保証されていません。この例では、3 番目の引数の「シャドウ」テストは foo の呼び出し前に評価され、変更されます。

混乱の解決

意図した結果を確実にするには評価順序を変更するには、式を別々のステートメントに分割します:

このコードは正しくあります出力:

以上がC では std::cout 引数の評価順序が予測できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート