<<
| сдвиг влево
| lvalue << выр
|
>>
| сдвиг вправо
| lvalue >> выр
|
<
| меньше
| выр < выр
|
<=
| меньше или равно
| выр <= выр
|
>
| больше
| выр > выр
|
>=
| больше или равно
| выр >= выр
|
==
| равно
| выр == выр
|
!=
| не равно
| выр!= выр
|
^
| побитовое исключающее ИЛИ
| выр ^ выр
|
|
| побитовое включающее ИЛИ
| выр | выр
|
&&
| логическое И
| выр && выр
|
||
| логическое включающее ИЛИ
| выр || выр
|
?:
| арифметический if
| выр? выр: выр
|
=
| простое присваивание
| lvalue = выр
|
*=
| умножить и присвоить
| lvalue = выр
|
/=
| разделить и присвоить
| lvalue /= выр
|
%=
| взять по модулю и присвоить
| lvalue %= выр
|
+=
| сложить и присвоить
| lvalue += выр
|
-=
| вычесть и присвоить
| lvalue -= выр
|
<<=
| сдвинуть влево и присвоить
| lvalue <<= выр
|
>>=
| сдвинуть вправо и присвоить
| lvalue >>= выр
|
&=
| И и присвоить
| lvalue &= выр
|
|=
| включающее ИЛИ и присвоить
| lvalue |= выр
|
^=
| исключающее ИЛИ и присвоить
| lvalue ^= выр
|
,
| запятая (последование)
| выр, выр
|
Круглые скобки
Скобками синтаксис C++ злоупотребляет; количество способов их использования приводит в замешательство: они применяются для заключения в них параметров в вызовах функций, в них заключается тип в преобразовании типа (приведении к типу), в именах типов для обозначения функций, а также для разрешения конфликтов приоритетов. К счастью, последнее требуется не слишком часто, потому что уровни приоритета и правила ассоциативности определены таким образом, чтобы выражения "работали ожидаемым образом" (то есть, отражали наиболее привычный способ употребления). Например, значение
if (i<=0 || max