Zgodnie z pierwszeństwem operatora , operator przecinka ma niższy priorytet niż operator=
, więc x = 2,3;
jest równoważny (x = 2),3;
. (Pierwszeństwo operatorów określa, w jaki sposób operator będzie powiązany ze swoimi argumentami, ściślej lub luźniej niż inne operatory, zgodnie z ich priorytetami.)
Zwróć uwagę, że wyrażenie z przecinkiem jest (x = 2),3
tutaj, a nie 2,3
. x = 2
jest najpierw oceniany (a jego skutki uboczne są zakończone), następnie wynik jest odrzucany, a następnie 3
oceniany (w rzeczywistości nic nie robi). Dlatego wartość x
jest 2
. Zauważ, że 3
jest to wynik całego wyrażenia z przecinkiem (tj. x = 2,3
), Nie będzie ono używane do przypisywania x
. (Zmień na x = (2,3);
, x
zostanie przypisany 3
.)
Ponieważ return 2,3;
wyrażenie z przecinkiem jest 2,3
, 2
jest oceniane, a następnie jego wynik jest odrzucany, a następnie 3
oceniany i zwracany jako wynik całego wyrażenia z przecinkiem, które jest później zwracane przez instrukcję return .
Dodatkowe informacje o wyrażeniach i instrukcjach
Wyrażenie to sekwencja operatorów i ich operandów, która określa obliczenia.
x = 2,3;
jest wyrażeniem , x = 2,3
jest wyrażeniem tutaj.
Wyrażenie, po którym następuje średnik, jest instrukcją.
Składnia: attr(optional) expression(optional) ; (1)
return 2,3;
jest instrukcją skoku ( instrukcją powrotu ), 2,3
jest wyrażeniem tutaj.
Składnia: attr(optional) return expression(optional) ; (1)