出力ストリームにおける演算子の優先順位と結合性
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 サイトの他の関連記事を参照してください。