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),3tutaj, a nie 2,3. x = 2jest najpierw oceniany (a jego skutki uboczne są zakończone), następnie wynik jest odrzucany, a następnie 3oceniany (w rzeczywistości nic nie robi). Dlatego wartość xjest 2. Zauważ, że 3jest 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);, xzostanie przypisany 3.)
Ponieważ return 2,3;wyrażenie z przecinkiem jest 2,3, 2jest oceniane, a następnie jego wynik jest odrzucany, a następnie 3oceniany 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,3jest 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,3jest wyrażeniem tutaj.
Składnia: attr(optional) return expression(optional) ; (1)