За даними оператора старшинства , оператор коми має більш низький пріоритет , ніж 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)