Что такое приоритет операций
Перейти к содержимому

Что такое приоритет операций

  • автор:

C++: Приоритет операций

Посмотрите внимательно на выражение 2 + 2 * 2 и посчитайте в уме ответ.

Правильный ответ: 6.

Если у вас получилось 8, то этот урок для вас. В школьной математике мы изучали понятие «приоритет операции». Приоритет определяет то, в какой последовательности должны выполняться операции. Например, умножение и деление имеют больший приоритет, чем сложение и вычитание: 2 + 3 * 2 вычислится в 8.

Но нередко вычисления должны происходить в порядке, отличном от стандартного приоритета. В сложных ситуациях приоритет можно (и нужно) задавать круглыми скобками, точно так же, как в школе, например: (2 + 2) * 2 .

Скобки можно ставить вокруг любой операции. Они могут вкладываться друг в друга сколько угодно раз. Вот пара примеров:

std::cout 6 std::cout 14 

Иногда выражение сложно воспринимать визуально. Тогда можно расставить скобки, не повлияв на приоритет. Например, задание из прошлого урока можно сделать немного понятнее, если расставить скобки.

std::cout 10 
std::cout 10 

Запомните: код пишется для людей, потому что код будут читать люди, а машины будут только исполнять его. Для машин нет «более» понятного или «менее» понятного кода, независимо от того, является ли код корректным или нет.

Задание

Дано выражение 70 * 3 + 4 / 8 + 2 .

Расставьте скобки так, чтобы оба сложения ( 3 + 4 и 8 + 2 ) высчитывались в первую очередь. Выведите результат на экран.

Упражнение не проходит проверку — что делать? ��

Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:

  • Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.

В моей среде код работает, а здесь нет ��

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Мой код отличается от решения учителя ��

Это нормально ��, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.

В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Прочитал урок — ничего не понятно ��

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.

Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.

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

Приоритет определяет порядок выполнения операций в выражении. Первыми выполняются операции, имеющие высший приоритет. Операции, имеющие одинаковый приоритет, выполняются слева направо.

Таблица приоритетов операций

@ , not , ^ , + , — (унарные), new 1 (наивысший)
* , / , div , mod , and , shl , shr , as , is 2
+ , — (бинарные), or , xor 3
= , <> , < , >, = , in 4
?: 5 (низший)

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

Приоритеты операторов Python

Самые приоритетные операции вверху, снизу — с низким приоритетом. Вычисления выполняются слева направо, то есть, если в выражении встретятся операторы одинаковых приоритетов, первым будет выполнен тот, что слева.

Оператор возведения в степень исключение из этого правила. Из двух операторов ** сначала выполнится правый, а потом левый.

Операторы Описание
() Скобки
** Возведение в степень
+x , -x , ~x Унарные плюс, минус и битовое отрицание
* , / , // , % Умножение, деление, целочисленное деление, остаток от деления
+ , — Сложение и вычитание
> Битовые сдвиги
& Битовое И
^ Битовое исключающее ИЛИ ( XOR )
| Битовое ИЛИ
== , != , > , >= , < , Сравнение, проверка идентичности, проверка вхождения
not Логическое НЕ
and Логическое И
or Логическое ИЛИ

Хотите выучить Python на практике?

С нуля и до создания компьютерной игры

Собственный онлайн-тренажер с проверкой практических задач

Что такое приоритет операций

Приоритет операций — очерёдность выполнения операций в выражении, при условии, что в выражении нет явного указания порядка следования выполнения операций (с помощью круглых скобок).

Если операции имеют одинаковый приоритет, то очерёдность выполнения таких операций определяется согласно свойству ассоциативности.

Ассоциативность — направление выполнения операций в случае, если операции имеют одинаковый приоритет.

В таблице показаны основные операции в С++, их приоритет выполнения и ассоциативность.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *