Wie funktioniert der Kommaoperator in C ++?
Zum Beispiel, wenn ich das tue:
a = b, c;
Entspricht a b oder c?
(Ja, ich weiß, dass dies einfach zu testen ist. Dokumentieren Sie hier einfach, damit jemand die Antwort schnell findet.)
Update: Diese Frage hat bei Verwendung des Komma-Operators eine Nuance aufgedeckt. Nur um dies zu dokumentieren:
a = b, c; // a is set to the value of b!
a = (b, c); // a is set to the value of c!
Diese Frage wurde tatsächlich von einem Tippfehler im Code inspiriert. Was sein sollte
a = b;
c = d;
Wurde zu
a = b, // <- Note comma typo!
c = d;
a = (b, c);
.
a = b, c = d;
tatsächlich die gleiche Leistung wie beabsichtigt a = b; c = d;
?
b
und d
Funktionsbewertungen sind, die einen gemeinsamen Zustand verwenden (und ändern), wird die Ausführungsreihenfolge erst definiert C++17
.