Heim > Backend-Entwicklung > C++ > Wie wirken sich Operatorpriorität und Assoziativität auf die Reihenfolge der C-Ausgabeströme aus?

Wie wirken sich Operatorpriorität und Assoziativität auf die Reihenfolge der C-Ausgabeströme aus?

Susan Sarandon
Freigeben: 2024-12-28 15:30:32
Original
141 Leute haben es durchsucht

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

Operatorpriorität und Assoziativität in Ausgabeströmen

In C kann das Verhalten des Ausgabestromoperators (<<) kontraintuitiv sein wenn mehrere Argumente angegeben werden. Auch wenn es den Anschein hat, als würden die Argumente von links nach rechts verarbeitet, ist das nicht immer der Fall.

Wie in den folgenden Codeausschnitten dargestellt, kann die Reihenfolge der Ausgabe je nach Platzierung des << Operator und die Anzahl der bereitgestellten Argumente.

myQueue.enqueue('a');
myQueue.enqueue('b');
cout << myQueue.dequeue() << myQueue.dequeue(); // prints "ba"
Nach dem Login kopieren

In diesem Fall ist der erste << Der Operator steht außerhalb der Klammern, sodass der erste Aufruf zum Entfernen aus der Warteschlange zuerst ausgewertet wird. Dieses Ergebnis wird dann als Argument für das zweite << verwendet. Operator.

Wenn jedoch der << Werden Operatoren in Klammern gesetzt, ändert sich die Reihenfolge der Operationen.

myQueue.enqueue('a');
myQueue.enqueue('b');
cout << (myQueue.dequeue() << myQueue.dequeue()); // prints "ab"
Nach dem Login kopieren

Hier gruppieren die Klammern die << Operator mit dem ersten Dequeue-Aufruf, wodurch der erste << um das Ergebnis des Dequeue auszuwerten. Dieses Ergebnis wird dann als Argument für den zweiten Aufruf aus der Warteschlange verwendet, gefolgt vom äußeren << Operator.

Dieses Verhalten ist auf die Tatsache zurückzuführen, dass der << Der Operator hat keinen Sequenzpunkt, was bedeutet, dass der Compiler die Auswertungsreihenfolge seiner Argumente optimieren kann. Um eine konsistente Ausgabe sicherzustellen, wird empfohlen, Klammern zu verwenden, um die ausgegebenen Argumente explizit zu gruppieren.

Das obige ist der detaillierte Inhalt vonWie wirken sich Operatorpriorität und Assoziativität auf die Reihenfolge der C-Ausgabeströme aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage