Приоритеты операций и порядок выполнения выражений
В прошлых выпусках я рассказал о следующих типах операций в выражении:
Зачастую в выражении можно встретить сразу несколько операций. Возникает вопрос - в какой последовательности эти операции будут выполняться. Это очень важный вопрос, ведь от этого зависит конечный результат, который мы в итоге получим.
Разобьем операции по группам в порядке уменьшения приоритетов.
-
1-я группа (наивысший приоритет). Вызов функции и доступ к элементу массива (например, a[7]).
- 2-я группа. Операции с одним операндом:
- логическое отрицание (!);
- побитовое отрицание (~);
- прибавление единицы (++);
- вычитание единицы (--);
- изменение знака на противоположный (-).
-
3-я группа. Побитовые операции:
- побитовая операция И (&);
- побитовая операция ИЛИ (|);
- побитовая операция исключающее ИЛИ (^);
- побитовый сдвиг вправо (>>);
- побитовый сдвиг влево (<<).
<
/li>
- 4-я группа. Ряд арифметических операций:
- умножение (*);
- деление (/);
- получение остатка от деления (%).
- 5-я группа. Оставшиеся арифметические операции:
- сложение (+);
- вычитание (-).
- 6-я группа. Операции отношения:
- больше (>);
- больше или равно (>=);
- меньше (<);
- меньше или равно (<=);
- равно (=);
- не равно (!=).
- 7-я группа. Логическая операция И (&&).
- 8-я группа. Логическая операция ИЛИ (||).
- 9-я группа. Операция присваивания и объединенные арифметические и побитовые операции с операцией присваивания:
- операция присваивания (=);
- сложение с присваиванием (+=);
- вычитание с присваиванием (-=);
- умножение с присваиванием (*=);
- деление с присваиванием (/=);
- остаток от деления с присваиванием (%=);
- побитовая операция "И" с присваиванием (&=);
- побитовая операция "ИЛИ" с присваиванием (|=);
- побитовая операция исключающее "ИЛИ" с присваиванием (^=);
- побитовый сдвиг влево с присваиванием (<<=);
- побитовый сдвиг вправо с присваиванием (>>=).
Сначала выполняются все операции первой группы, потом все операции второй группы и т.д. до девятой группы операций. Если в выражении присутствует несколько операций, принадлежащих одной группе, то они выполняются слева направо. Единственное исключение - операции второй и девятой групп - они выполняются справа налево.
Бывают случаи, когда Вам нужно изменить порядок выполнения операций по умолчанию. В этом случае Вы должны использовать круглые скобки () - они имеют наивысший приоритет.
Пример выражения:
a = 5 + 6 * 3; // переменной a будет присвоено значение 23
a = ( 5 + 6 ) *3; // переменной a будет присвоено значение 33
В следующем выпуске мы продолжим анализ кода функции init() нашего первого эксперта и расскажу об условном операторе if-else.