Вычисляется первое выражение, включая все побочные эффекты; если оно не равно 0, то результат есть значение второго выражения, в противном случае - значение третьего выражения. Вычисляется только один из двух последних операндов: второй или третий. Если второй и третий операнды арифметические, то выполняются обычные арифметические преобразования, приводящие к некоторому общему типу, который и будет типом результата. Если оба операнда имеют тип
При сравнении типов указателей квалификаторы типов (A8.2) объектов, на которые указатели ссылаются, во внимание не принимаются, но тип результата наследует квалификаторы обеих ветвей условного выражения
A7.17. Выражения присваивания
Существует несколько операторов присваивания; они выполняются справа налево.
=
*=
/=
%=
+=
-=
<<=
>>=
&=
^=
|=
Операторы присваивания в качестве левого операнда требуют
Тип выражения присваивания соответствует типу его левого операнда, а значение равно значению его левого операнда после завершения присваивания.
В простом присваивании с оператором = значение выражения замещает объект, к которому обращается
Выражение E1
A7.18. Оператор запятая
Два выражения, разделенные запятой, вычисляются слева направо, и значение левого выражения отбрасывается. Тип и значение результата совпадают с типом и значением правого операнда. Вычисление всех побочных эффектов левого операнда завершается перед началом вычисления правого операнда. В контексте, в котором запятая имеет специальное значение, например в списках аргументов функций (A7.3.2) или в списках инициализаторов (A8.7) (здесь в качестве синтаксических единиц фигурируют выражения присваивания), оператор запятая может появиться только в группирующих скобках. Например, в
f(a, (t=3, t+2), c)
три аргумента, из которых второй имеет значение 5.
A7.19. Константные выражения
Синтаксически, константное выражение - это выражение с ограниченным подмножеством операторов:
При указании