Приоритеты операций

Мы приводим полную таблицу всех операций в порядке приоритетов.

П

Символы

Описание

Пример

А

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).

Об операции явного приведения типов будет рассказано в следующей главе.