Приоритеты операций
Мы приводим полную таблицу всех операций в порядке приоритетов.
П |
Символы |
Описание |
Пример |
А |
---|---|---|---|---|
0 |
:: |
Разрешение контекста |
n1 :: n2 |
L |
1 |
() |
Группировка |
(e1) |
L |
1 |
[] |
Индекс |
[e1] |
L |
1 |
. |
Разыменование |
n1.n2 |
L |
1 |
++ |
Постфикс инкремент |
e1++ |
L |
1 |
-- |
Постфикс декремент |
e1-- |
L |
2 |
! |
Логическое НЕ |
!e1 |
R |
2 |
~ |
Побитовое отрицание (инверсия) |
~e1 |
R |
2 |
+ |
Унарный плюс |
+e1 |
R |
2 |
- |
Унарный минус |
-e1 |
R |
2 |
++ |
Префикс инкремент |
++e1 |
R |
2 |
-- |
Префикс декремент |
--e1 |
R |
2 |
(type) |
Приведение типа |
(n1) |
R |
2 |
& |
Взятие адреса |
&n1 |
R |
3 |
* |
Умножение |
e1 * e2 |
L |
3 |
/ |
Деление |
e1 / e2 |
L |
3 |
% |
Деление по модулю |
e1 % e2 |
L |
4 |
+ |
Сложение |
e1 + e2 |
L |
4 |
- |
Вычитание |
e1 - e2 |
L |
5 |
<< |
Сдвиг влево |
e1 << e2 |
L |
5 |
>> |
Сдвиг вправо |
e1 >> e2 |
L |
6 |
< |
Меньше |
e1 < e2 |
L |
6 |
> |
Больше |
e1 > e2 |
L |
6 |
<= |
Меньше или равно |
e1 <= e2 |
L |
6 |
>= |
Больше или равно |
e1 >= e2 |
L |
7 |
== |
Равно |
e1 == e2 |
L |
7 |
!= |
Не равно |
e1 != e2 |
L |
8 |
& |
Побитовое И |
e1 & e2 |
L |
9 |
^ |
Побитовое исключающее ИЛИ |
e1 ^ e2 |
L |
10 |
| |
Побитовое ИЛИ |
e1 | e2 |
L |
11 |
&& |
Логическое И |
e1 && e2 |
L |
12 |
|| |
Логическое ИЛИ |
e1 || e2 |
L |
13 |
?: |
Условный тернарный |
c1 ? e1 : e2 |
R |
14 |
= |
Присваивание |
e1 = e2 |
R |
14 |
+= |
Сложение с присваиванием |
e1 += e2 |
R |
14 |
-= |
Вычитание с присваиванием |
e1 -= e2 |
R |
14 |
*= |
Умножение с присваиванием |
e1 *= e2 |
R |
14 |
/= |
Деление с присваиванием |
e1 /= e2 |
R |
14 |
%= |
Деление по модулю с присваиванием |
e1 %= e2 |
R |
14 |
<<= |
Сдвиг влево с присваиванием |
e1 <<= e2 |
R |
14 |
>>= |
Сдвиг вправо с присваиванием |
e1 >>= e2 |
R |
14 |
&= |
Побитовое И с присваиванием |
e1 &= e2 |
R |
14 |
|= |
Побитовое ИЛИ с присваиванием |
e1 |= e2 |
R |
14 |
^= |
Побитовое И/ИЛИ с присваиванием |
e1 ^= e2 |
R |
15 |
, |
Запятая |
e1 , e2 |
L |
Квадратные скобки, как мы видели, используются для указания индексов элементов массивов, и потому имеют один из высших приоритетов.
Помимо операторов, которые были рассмотрены ранее, здесь также имеется несколько пока неизвестных.
Оператор разрешения контекста '::' мы изучим в рамках объектно-ориентированного программирования (ООП). Тогда же нам станет необходим и оператор разыменования '.'. Их операндами выступают не выражения, а идентификаторы типов (классов) и их свойств.
Оператор взятия адреса '&' предназначен для передачи параметров функций по ссылке и получения адреса объекта в ООП. В обоих случаях оператор применяется к переменной (LValue).
Об операции явного приведения типов будет рассказано в следующей главе.