ホームページ > バックエンド開発 > C++ > 演算子の優先順位と結合性は C の出力ストリームの順序にどのような影響を与えますか?

演算子の優先順位と結合性は C の出力ストリームの順序にどのような影響を与えますか?

Susan Sarandon
リリース: 2024-12-28 15:30:32
オリジナル
141 人が閲覧しました

How Does Operator Precedence and Associativity Affect C   Output Stream Ordering?

出力ストリームにおける演算子の優先順位と結合性

C では、出力ストリーム演算子 (<<) の動作が直観に反する場合があります。複数の引数が指定された場合。引数は左から右に処理されるように見えるかもしれませんが、必ずしもそうではありません。

以下のコード スニペットに示すように、出力の順序は << の配置によって異なる場合があります。演算子と指定された引数の数。

myQueue.enqueue('a');
myQueue.enqueue('b');
cout << myQueue.dequeue() << myQueue.dequeue(); // prints "ba"
ログイン後にコピー

この場合、最初の <<演算子は括弧の外側にあるため、最初のデキュー呼び出しが最初に評価されます。この結果は、2 番目の << の引数として使用されます。

ただし、<<演算子を括弧内に置くと、演算の順序が変わります。

myQueue.enqueue('a');
myQueue.enqueue('b');
cout << (myQueue.dequeue() << myQueue.dequeue()); // prints "ab"
ログイン後にコピー

ここで、括弧は << をグループ化します。最初のデキュー呼び出しを行う演算子により、最初の << が発生します。デキューの結果を評価します。この結果は、2 番目のデキュー呼び出しの引数として使用され、その後に外側の << が続きます。演算子。

この動作は、<<演算子にはシーケンス ポイントがありません。これは、コンパイラが引数の評価順序を最適化できることを意味します。出力の一貫性を確保するには、括弧を使用して出力される引数を明示的にグループ化することをお勧めします。

以上が演算子の優先順位と結合性は C の出力ストリームの順序にどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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