Операторы сравнения и логические операторы
Операторы сравнения
Операторы сравнения проверяют отношение между двумя значениями и возвращают bool — true или false.
| Оператор | Значение | Пример |
|---|---|---|
== | равно | a == b |
!= | не равно | a != b |
> | больше | a > b |
< | меньше | a < b |
>= | больше или равно | a >= b |
<= | меньше или равно | a <= b |
int age = 20;bool adult = age >= 18;std::cout << adult << '\n';Не путай = и ==: первый оператор присваивает значение, второй сравнивает значения.
Логические операторы
&&— логическое И: оба условия должны быть истинными.||— логическое ИЛИ: достаточно одного истинного условия.!— логическое НЕ: инвертирует результат.
int age = 22;bool hasTicket = true;if (age >= 18 && hasTicket) { std::cout << "Вход разрешён\n";}Короткое замыкание
В выражении a && b правая часть не вычисляется, если a уже ложно. В выражении a || b правая часть не вычисляется, если a уже истинно. Это позволяет безопасно проверять указатель перед обращением к объекту:
if (ptr != nullptr && ptr->IsReady()) { // ptr разыменовывается только после успешной проверки}Приоритет и скобки
Скобки помогают сделать намерение очевидным:
if ((age >= 18 && hasTicket) || isAdministrator) { // условие выполнено}Не полагайся на память о приоритете сложных выражений — добавляй скобки там, где они улучшают читаемость.
Частые ошибки
- Использовать
=вместо==. - Проверять диапазон как
0 <= x <= 10. В C++ это не означает математическую цепочку. Пишиx >= 0 && x <= 10. - Сравнивать числа с плавающей точкой на точное равенство после вычислений. Иногда лучше проверять разницу с допустимой погрешностью.
Итог
Сравнения дают bool, а &&, || и ! позволяют объединять проверки. Пиши сложные условия так, чтобы их смысл можно было понять с первого взгляда.
