Kommaoperator: ,

Ermöglicht das Gruppieren von zwei Anweisungen, wo eine erwartet wird.

Syntax

expression , expression

Hinweise

Der Operator Komma weist eine Assoziativität von links nach rechts auf. Zwei Ausdrücke, die durch ein Komma getrennt werden, werden von links nach rechts ausgewertet. Der linke Operand wird immer ausgewertet und alle Nebeneffekte werden abgeschlossen, bevor der rechte Operand ausgewertet wird.

Kommas können in einigen Kontexten, z. B. Funktionsargumentlisten, als Trennzeichen verwendet werden. Verwechseln Sie die Verwendung des Kommas als Trennzeichen nicht mit seiner Verwendung als Operator. Die beiden Anwendungsmöglichkeiten sind vollkommen unterschiedlich.

Betrachten Sie den Ausdruck e1, e2. Der Typ und Wert des Ausdrucks entsprechen dem Typ und Wert von e2. Das Ergebnis der Auswertung von e1 wird verworfen. Dieses Ergebnis ist ein L-Wert, wenn der rechte Operand ein L-Wert ist.

Während das Komma normalerweise als Trennzeichen verwendet wird (z. B. in tatsächlichen Argumenten für Funktionen oder Aggregatinitialisierer), müssen der Komma-Operator und seine Operanden in Klammern eingeschlossen werden. Beispiel:

func_one( x, y + 2, z );
func_two( (x--, y + 2), z );

Im obigen Funktionsaufruf an func_one werden drei durch Trennzeichen getrennte Argumente übergeben: x, y + 2 und z. Im Funktionsaufruf an func_two zwingen Klammern den Compiler, das erste Komma als Operator für sequenzielle Auswertung zu interpretieren. Dieser Funktionsaufruf übergibt zwei Argumente an func_two. Das erste Argument ist das Ergebnis der Sequentialauswertungsoperation (x--, y + 2), welche den Wert und den Typ des Ausdrucks y + 2 hat; das zweite Argument ist z.

Beispiel

// cpp_comma_operator.cpp
#include <stdio.h>
int main () {
   int i = 10, b = 20, c= 30;
   i = b, c;
   printf("%i\n", i);

   i = (b, c);
   printf("%i\n", i);
}
20
30

Siehe auch

Ausdrücke mit binären Operatoren
Integrierte C++-Operatoren, Rangfolge und Assoziativität
Operator für sequenzielle Auswertungen