За даними оператора старшинства , оператор коми має більш низький пріоритет , ніж operator=
, так що x = 2,3;
еквівалентно (x = 2),3;
. (Пріоритет оператора визначає, яким чином оператор буде зв’язаний зі своїми аргументами, жорсткішим або вільнішим, ніж інші оператори відповідно до їхніх пріоритетів.)
Зверніть увагу, що вираз із комою (x = 2),3
тут, а не 2,3
. x = 2
спочатку оцінюється (і його побічні ефекти закінчуються), потім результат відкидається, потім 3
оцінюється (насправді він нічого не робить). Ось чому значення x
є 2
. Зверніть увагу, що 3
це результат усього виразу з комою (тобто x = 2,3
), який не буде використовуватися для присвоєння x
. (Змініть його на x = (2,3);
, x
буде призначено з 3
.)
Для отримання return 2,3;
, вираз коми 2,3
, 2
обчислюються потім його результат відкидається, а потім 3
обчислюється і повертаються як результат всього висловлювання коми, який повертається в зворотному заяві пізніше.
Додаткова інформація про вирази та заяви
Вираз - це послідовність операторів та їх операндів, що задає обчислення.
x = 2,3;
є виразом виразу , x = 2,3
є виразом тут.
Вираз, за яким ставиться крапка з комою - це твердження.
Синтаксис: attr(optional) expression(optional) ; (1)
return 2,3;
є оператором jump ( оператором return ), 2,3
є виразом тут.
Синтаксис: attr(optional) return expression(optional) ; (1)