logo
Харви Дейтел, Пол Дейтел Как программировать на С++ / 02-Deitel-Стр-115-214

2.19. Логические операции

Пока мы изучили только простые условия, такие, как counter <= 10, total > 1000 и number 1= sentineValue. Мы выражали эти условия в терминах операций отношения >, <, >=, <= и операций проверки на равенство == и !=. Каждое решение принималось на основе одного условия. Если мы хо­тели в процессе принятия решения проверять несколько условий, мы должны были реализовывать эти проверки отдельными операторами или вложенными структурами if или if/else.

С++ предоставляет нам логические операции, которые могут использо­ваться для формирования сложных условий путем комбинирования простых условий. Логическими операциями являются && (логическое И), || (логичес­кое ИЛИ) и ! (логическое НЕ, называемое также логическое отрицание). Рассмотрим примеры каждой из них.

Предположим, мы хотим обеспечить в некоторой точке программы, чтобы определенный путь расчета выбирался только в случае, когда два условия одновременно истинны. Тогда мы можем применить логическую операцию &&, например:

if (gender == 1 && age >= 65} ++seniorFemales;

Этот оператор if содержит два простых условия. Условие gender == 1 может проверяться, например, чтобы определить, является ли данное лицо женщи­ной. Условие age >= 65 проверяется, чтобы определить, является ли человек пожилым гражданином. Проверка этих двух простых условий выполняется первой, поскольку приоритет обеих операций == и >= выше, чем приоритет операции &&. Затем оператор if рассматривает комбинацию этих условий

(gender == 1) && (age >= 65)

Таблица на рис. 2.28 поясняет действие операции)&&. Эта таблица пока­зывает все четыре возможных сочетания комбинаций нулевого (false — ложь) и ненулевого (true — истина) значений первого и второго выражений. Подоб­ные таблицы часто называются таблицами истинности. С++ воспринимает как 0 или как 1 все выражения, содержащие операции отношения, проверки на равенство или логические операции. Хотя С++ возвращает 1, если результат равен true, он воспринимает как true любое ненулевое значение.

выражение 1

выражение 2

выражение 1 && выражение 2

0

0

0

0

ненулевое

0

ненулевое

0

0

ненулевое

ненулевое

1

Рис. 2.28. Таблица истинности операции && (логическое И)

Теперь давайте рассмотрим операцию || (логическое ИЛИ). Предположим, мы хотим обеспечить в некоторой точке программы, чтобы определенный путь расчета выбирался только в случае, когда хотя бы одно из двух условий истинно. В этом случае мы можем применить логическую операцию ||, на­пример: