- •Действия: что делает программа Глава 2 Выражения
- •Арифметические операторы
- •Замечание
- •Операторы отношений
- •Логические операторы
- •Оператор отрицания
- •Операторы инкремента и декремента
- •Поразрядные операторы
- •Поразрядный оператор исключающего или
- •Сдвиг битов влево
- •Дополнение до единицы
- •Сомр 44 0х002с 0000000000101100
- •Операторы присваивания
- •Выражения значений
- •Приоритеты операторов
Замечание
Всегда используйте столько круглых скобок, сколько нужно для того, чтобы сделать ясной структуру выражения. Круглые скобки совершенно не влияют на быстродействие, с их помощью вы просто задаете желаемый порядок вычисления.
Сложные выражения без круглых скобок вычисляются в соответствии с фиксированным приоритетом, назначенным каждому оператору. Поскольку операторы * и / имеют более высокий приоритет, чем + и - , то выражение
(А + В * С)
логически идентично выражению
(А + (В * С)).
Поскольку умножение выполняется перед сложением, внутренняя пара скобок не нужна. Но если вы хотите выполнить сложение до умножения, вы должны написать
((А + В) * С).
К приоритетам операторов мы вернемся несколько позже, рассмотрев все операторы языка С.
В программировании на С операторы / и * имеют один и тот же приоритет, таким образом выражение А / В * С вычисляется слева направо, т.е. как в выражении (А / В) * С, но не как А / (В * С).
Операторы отношений
Операторы отношений обрабатывают свои операнды таким образом, чтобы получить либо истинный (ненулевой), либо ложный (нулевой) результат. Выражение
(А < В)
истинно только в случае, если А меньше В. Переменные А и В должны принадлежать к таким типам данных, которые можно сравнивать. Обычно это целые или значения с плавающей запятой.
В табл. 2.2 перечислены все операторы отношений языка С. В дальнейшем некоторые из них вы будете использовать в операторах, которые могут принимать решения и выполнять операции, основанные на истинных и ложных выражениях.
Таблица 2.2. Операторы отношений
Оператор
|
Описание
|
Пример
|
<
|
Меньше
|
(а < Ь)
|
<=
|
Меньше или равно
|
(а <= Ь)
|
>
|
Больше
|
(а > Ь)
|
>=
|
Больше или равно
|
(а >= Ь)
|
==
|
Равно
|
(а == Ь)
|
!=:
|
Не равно
|
(а != Ь)
|
Замечание
Оператор равенства представлен двойным знаком равенства, таким образом, выражение (А == В) будет истинно, только если А равно В. Не путайте такие выражения с операторами типа А = В, которые присваивают значение В переменной А. Для операторов присваивания всегда используйте одиночный знак равенства (=), а для сравнения двух значений — двойной (==).
Логические операторы
Логические операторы && и || объединяют выражения отношений в соответствии с правилами для логического И и ИЛИ. Используйте логический оператор И (&&) в сложных выражениях отношений, аналогичных следующему:
(А < В) && (В < С),
которое будет истинным, только если А меньше В и В меньше С.
Подобным образом используйте оператор ИЛИ (||). Выражение
(А < В) || (В < С)
будет истинным, только если А меньше В или В меньше С.
Сложные логические выражения вычисляются рациональным способом. Например, если при вычислении выражения
(А <= В) && (В <= С)
оказалось, что А больше В, то все выражение, как и его первая составляющая (А <= В), примет значение "ложь", поэтому вторая часть (В <= С) не вычисляется. Такая сокращенная обработка сложных логических выражений способствует быстрому выполнению программы. Для любого выражения отношения, чтобы получить точный результат, выполняется только минимальное число операций.