►Определение порядка операций...52

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

        int var = 2 * 3 + 1 ;

Если сложение выполнить перед умножением, то значением выражения будет 2 * 4 = 8. Если сперва выполнить умножение, то получим значение 6 + 1 = 7.

Приоритеты операций определяют порядок выполнения вычислений. Из табл. 3.1 видно, что приоритет операции умножения выше, чем сложения, т.е. результат всё же равен 7 ( приоритеты используются также в арифметике, и С++ следует именно им ).

А что происходит, когда в одном выражении используется два оператора с одинаковым приоритетом?

            int var = 8 / 4 / 2 ;

Как в этом случае следует поступить: сначала 8 поделить на 4 или 4 на 2? Если в одном выражении присутствуют операции с одинаковыми приоритетами, они выполняются слева направо ( то же правило применяется и в арифметике ). Поэтому в предыдущем примере сперва делим 8 на 4, получая 2, а затем делим его на 2, получая ответ — 1.

В выражении

            х / 100 + 32

х делится на 100 и к результату прибавляется 32. Но что, если программисту нужно поделить х на сумму 100 и 32? В таком случае ему придётся использовать скобки:

            х / ( 100 + 32 )

При вычислении такого выражения х будет делиться на 132. Заметим, что начальное выражение х / 100 + 32 идентично следующему:

            ( х / 100 ) + 32

Почему это действительно так? Потому что С++ сначала выполняет операции с высшим приоритетом. А приоритет операций умножения и деления выше, чем сложения и вычитания. Поэтому скобки, указывающие на высокий приоритет данной операции, можно опустить.

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

_________________

52 стр. Часть 1. Первое знакомство с С++