Книга: HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов
Приоритет операторов
Приоритет операторов
Последний вопрос, который мы здесь разберем, — приоритет операторов. Как мы помним, приоритет влияет на порядок, в котором выполняются операторы в выражении.
Пусть имеется следующее выражение:
a = b + c — 10;
В этом случае сначала к значению переменной b будет прибавлено значение c, а потом из суммы будет вычтено 10. Операторы этого выражения имеют одинаковый приоритет и поэтому выполняются строго слева направо.
Теперь рассмотрим такое выражение:
a = b + c * 10;
Здесь сначала будет выполнено умножение значения c на 10, а уже потом к полученному произведению будет прибавлено значение b. Оператор умножения имеет больший приоритет, чем оператор сложения, поэтому порядок "строго слева направо" будет нарушен.
Самый низкий приоритет у операторов присваивания. Вот почему сначала вычисляется само выражение, а потом его результат присваивается переменной.
В общем, основной принцип выполнения всех операторов таков: сначала выполняются операторы с более высоким приоритетом, а уже потом — операторы с более низким. Операторы с одинаковым приоритетом выполняются в порядке их следования (слева направо).
В табл. 14.9 перечислены все изученные нами операторы в порядке убывания их приоритетов.
Таблица 14.9. Приоритет операторов (в порядке убывания)
ВНИМАНИЕ!
Запомните эту таблицу. Неправильный порядок выполнения операторов может стать причиной трудно выявляемых ошибок, при которых внешне абсолютно правильное выражение дает неверный результат.
Но что делать, если нам нужно нарушить обычный порядок выполнения операторов? Воспользуемся скобками. При такой записи заключенные в скобки операторы выполняются первыми:
a = (b + c) * 10;
Здесь сначала будет выполнено сложение значений переменных b и c, а потом получившаяся сумма будет умножена на 10.
Операторы, заключенные в скобки, также подчиняются приоритету. Поэтому часто используются многократно вложенные скобки:
a = ((b + c) * 10 — d) / 2 + 9;
Здесь операторы будут выполнены в такой последовательности:
1. Сложение b и c.
2. Умножение полученной суммы на 10.
3. Вычитание d из произведения.
4. Деление разности на 2.
5. Прибавление 9 к частному.
Если удалить скобки:
a = b + c * 10 — d / 2 + 9;
то порядок выполнения операторов будет таким:
1. Умножение c и 10.
2. Деление d на 2.
3. Сложение b и произведения c и 10.
4. Вычитание из полученной суммы частного от деления d на 2.
5. Прибавление 9 к полученной разности.
Получается совсем другой результат, не так ли?
- 4.7. Обзор операторов
- 4.7.4. Побочные эффекты операторов
- 4.7.5. Приоритет операторов
- 4.7.6. Ассоциативность операторов
- 4.6. Приоритеты операторов
- Приоритет операторов в Python
- 3.3. Операторная запись (нотация)
- 4. ОПЕРАТОРЫ
- Побочные эффекты
- Операторы членства в Python:
- Операторы тождественности в Python: