Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Operator für sequenzielle Auswertung wird auch als „Komma-Operator“ bezeichnet. Er wertet seine beiden Operanden der Reihe nach von links nach rechts aus.
Syntax
expression
:
assignment-expression
expression
,
assignment-expression
Der linke Operand des Operators für die sequenzielle Auswertung (,
) wird als void
-Ausdruck ausgewertet. Das Ergebnis der Operation hat den gleichen Wert und Typ wie der rechte Operand. Jeder Operand kann einen beliebigen Typ aufweisen. Der Operator für die sequenzielle Auswertung führt keine Typkonvertierungen zwischen seinen Operanden durch und ergibt keinen L-Wert. Es gibt einen Sequenzpunkt nach dem ersten Operanden. Dies bedeutet, dass alle Nebenwirkungen bei der Auswertung des linken Operanden abgeschlossen werden, bevor die Auswertung des rechten Operanden beginnt. Weitere Informationen finden Sie unter Sequenzpunkte.
Der Operator für sequenzielle Auswertung wird normalerweise verwendet, um mindestens zwei Ausdrücke in Kontexten auszuwerten, in denen nur ein Ausdruck zulässig ist.
Kommas können in einigen Kontexten als Trennzeichen verwendet werden. Allerdings müssen Sie darauf achten, die Funktion des Kommas als Trennzeichen nicht mit der Funktion als Operator zu verwechseln, da beide Verwendungsmöglichkeiten unterschiedlich sind.
Beispiel
In diesem Beispiel wird der Operator für die sequenzielle Auswertung veranschaulicht:
for ( i = j = 1; i + j < 20; i += i, j-- );
In diesem Beispiel wird jeder Operand des dritten Ausdrucks der for
-Anweisung unabhängig ausgewertet. Der linke Operand i += i
wird zuerst ausgewertet; anschließend wird der rechte Operand j--
ausgewertet.
func_one( x, y + 2, z );
func_two( (x--, y + 2), z );
Im Funktionsaufruf an func_one
werden drei Argumente durch Trennzeichen getrennt ü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
.