Heim > Backend-Entwicklung > C++ > Warum ist der Orden von `cout

Warum ist der Orden von `cout

Susan Sarandon
Freigeben: 2024-12-25 15:39:18
Original
614 Leute haben es durchsucht

Why Does the Order of `cout

Operatorbewertungsreihenfolge in C-Operatorausdrücken

In den angegebenen Codeausschnitten:

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

und

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

Die Reihenfolge der gedruckten Anweisungen könnte unerwartet erscheinen. Allerdings ist das Verständnis der Bewertungsreihenfolge von << Der Operator verdeutlicht dieses Verhalten.

Der << Der Operator hat keine definierte Auswertungsreihenfolge für seine Argumente. Dies bedeutet, dass der Compiler sie in beliebiger Reihenfolge auswerten kann. Es garantiert jedoch, dass das zweite Argument (das rechts vom <<) nach dem ersten ausgewertet wird.

Im ersten Codeausschnitt spielt die Reihenfolge der Auswertung keine Rolle, da beide aus der Warteschlange entfernt werden ()-Aufrufe rufen verschiedene Elemente aus der Warteschlange ab. Im zweiten Snippet ist jedoch die Reihenfolge entscheidend.

Der Compiler kann den Code in verschiedenen Reihenfolgen auswerten, darunter:

auto tmp1 = myQueue.dequeue();
auto tmp2 = myQueue.dequeue();
cout << tmp1 << tmp2;
Nach dem Login kopieren

und

auto tmp1 = myQueue.dequeue();
cout << tmp1 << myQueue.dequeue();
Nach dem Login kopieren

The Die erste Bestellung gibt „ab“ aus, während die zweite „ba“ ausgibt. Die spezifische Ausgabe hängt von der vom Compiler gewählten Auswertungsreihenfolge ab.

Dieses Verhalten unterstreicht, wie wichtig es ist, die Auswertungsreihenfolge von Operatoren beim Schreiben von C-Code zu verstehen, insbesondere beim Umgang mit Operatoren, die eine undefinierte oder nicht sequenzierte Auswertungsreihenfolge haben.

Das obige ist der detaillierte Inhalt vonWarum ist der Orden von `cout. 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