Nach dem Operator Präzedenz , Komma - Operator hat niedrigere Priorität als operator=
, so x = 2,3;
entspricht (x = 2),3;
. (Die Priorität des Operators bestimmt, wie der Operator an seine Argumente gebunden wird, je nach Priorität enger oder lockerer als andere Operatoren.)
Beachten Sie, dass der Komma-Ausdruck (x = 2),3
hier nicht steht 2,3
. x = 2
wird zuerst ausgewertet (und seine Nebenwirkungen sind abgeschlossen), dann wird das Ergebnis verworfen und dann 3
ausgewertet (es tut tatsächlich nichts). Deshalb ist der Wert x
ist 2
. Beachten Sie, dass dies 3
das Ergebnis des gesamten Kommaausdrucks ist (dh x = 2,3
), für dessen Zuweisung er nicht verwendet wird x
. (Ändern Sie es in x = (2,3);
, x
wird zugewiesen mit 3
.)
Für return 2,3;
ist das Komma Ausdruck 2,3
, 2
bewertet wird , dann wird das Ergebnis verworfen und dann 3
ausgewertet wird und als das Ergebnis des gesamten Komma Ausdruck zurückgegeben, der durch die zurückgeführt wird return - Anweisung später.
Zusätzliche Informationen zu Ausdrücken und Aussagen
Ein Ausdruck ist eine Folge von Operatoren und ihren Operanden, die eine Berechnung angibt.
x = 2,3;
ist Ausdruck Aussage , x = 2,3
ist der Ausdruck hier.
Ein Ausdruck gefolgt von einem Semikolon ist eine Aussage.
Syntax: attr(optional) expression(optional) ; (1)
return 2,3;
ist die Sprunganweisung ( return-Anweisung ), 2,3
ist hier der Ausdruck.
Syntax: attr(optional) return expression(optional) ; (1)