При вычислении значений выражений, содержащих более одной операции, учитываются приоритет операций и порядок их расположения в выражении.
В приведенной ниже таблице рассмотренные к настоящему моменту операции языка C++ приведены в порядке убывания приоритета. Операции с разными приоритетами разделены чертой.
Таблица 3. Приоритеты операций
Операция
| Краткое описание
| Порядок выполнения
|
::
| разрешение области видимости имен
|
|
()
| повышение приоритета
| слева направо
|
Унарные операции:
sizeof
~
!
-
+
( тип ) и тип ( )
++арг
--арг
|
определение размера
поразрядное НЕ
логическое НЕ
изменение знака
плюс
преобразование типа
префиксное инкрементирование
префиксное декрементирование
|
справа налево
|
*
/
%
| умножение
деление
остаток от деления
| слева направо
|
+
-
| сложение
вычитание
| слева направо
|
<<
>>
| сдвиг влево
сдвиг вправо
| слева направо
|
<
<=
>
>=
| меньше
меньше или равно
больше
больше или равно
| слева направо
|
==
!=
| равно
не равно
| слева направо
|
&
| поразрядное И
| слева направо
|
^
| поразрядное исключающее ИЛИ
| слева направо
|
|
| поразрядное ИЛИ
| слева направо
|
&&
| логическое И
| слева направо
|
||
| логическое ИЛИ
| слева направо
|
? :
| условная тернарная операция
| справа налево
|
=
*=
/=
%=
+=
-=
<<=
>>=
&=
|=
^=
| присваивание
умножение с присваиванием
деление с присваиванием
остаток от деления с присваиванием
сложение с присваиванием
вычитание с присваиванием
сдвиг влево с присваиванием
сдвиг вправо с присваиванием
поразрядное И с присваиванием
поразрядное ИЛИ с присваиванием
поразрядное исключающее ИЛИ с присваиванием
| справа налево
|
,
| последовательность
| слева направо
|
При вычислении значений выражений, содержащих операции с разным приоритетом, операции с более высоким приоритетом выполняются раньше. Например, в выражении
x = y + 5
вначале выполняется сложение, а затем присваивание, поскольку приоритет операции присваивания ниже приоритета операции сложения.
В выражении
a + b * c
сначала будет выполнено умножение b на c, а затем сложение a с полученным произведением. Изменять этот порядок можно при помощи скобок:
(a + b) * c
Теперь вначале выполнится суммирование a и b, а затем умножение полученной суммы на c.
Скобки могут быть вложенными, соответственно операции в самых внутренних скобках выполняются самыми первыми:
(a + (b * (c + d) ) – e)
7. Язык C++: производные типы данных