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. Таблица истинности операции && (логическое И)
Теперь давайте рассмотрим операцию || (логическое ИЛИ). Предположим, мы хотим обеспечить в некоторой точке программы, чтобы определенный путь расчета выбирался только в случае, когда хотя бы одно из двух условий истинно. В этом случае мы можем применить логическую операцию ||, например:
- 116 Глава 2
- 2.13. Основы повторения, управляемого счетчиком
- 2.14. Структура повторения for (цикл)
- 120 Глава 2
- 122 Глава 2
- 2.15. Пример использования структуры for
- 124 Глава 2
- 126 Глава 2
- 2.16. Структура множественного выбора switch
- Глава 2
- 130 Глава 2
- 132 Глава 2
- 2.17. Структура повторения do/while
- 134 Глава 2
- 2.18. Операторы break и continue
- Глава 2
- 2.19. Логические операции
- 138 Глава 2
- Глава 2
- 2.21. Заключение по структурному программированию
- IfcrpyKTypa (единственный выбор)
- Глава 2
- Глава 2
- 148 Глава 2
- Глава 2
- Глава 2
- Глава 2
- 156 Глава 2
- 158 Глава 2
- 160 Глава 2
- 2.1. А) следование, выбор и повторение, b) if/else. С) управляемым счет чиком или определенным заранее, d) Метку, сигнал, флаг или лож ный сигнал.
- 162 Глава 2
- 164 Глава 2
- 166 Глава 2
- 168 Глава 2
- 170 Глава 2
- 172 Глава 2
- 174 Глава 2
- 176 Глава 2
- 178 Глава 3
- Глава 3
- 3.3. Математические библиотечные функции
- 3.4. Функции
- Глава 3
- 3.5 Определения функций
- 184 Глава 3
- 186 ГлаваЗ
- 3.6. Прототипы функций
- 188 Глава 3
- 3.7. Заголовочные файлы
- 3.8. Генерация случайных чисел
- Глава 3
- 192 Глава 3
- 194 Глава 3
- 3.9. Пример: азартная игра
- Глава 3
- 198 Глава 3
- 3.10. Классы памяти
- 200 Глава 3
- 3.11. Правила, определяющие область действия
- 202 Глава 3
- 204 Глава 3
- 3.12 Рекурсия
- Глава 3
- 6) Значения, возвращаемые после каждого рекурсивного вызова
- 3.13. Пример использования рекурсии: последовательность чисел Фибоначчи
- Глава 3
- 3.14. Рекурсии или итерации
- 212 Глава 3
- Глава 3
- Глава 4
- Глава 5
- Глава 6
- 3.15. Функции с пустыми списками параметров
- 214 Глава 3
- 3.16. Встраиваемые функции