Операторы сравнения и логические операторы в C++
Что это и зачем?
Представь, что ты играешь в компьютерную игру. У тебя есть 100 жизней. Когда ты встречаешь монстра, игра проверяет: "Жизней больше 0?". Если да — ты можешь сражаться. Если нет — игра говорит: "Game Over".
В программировании такие проверки делают операторы сравнения и логические операторы. Они помогают программе принимать решения. Например:
- Проверить, достаточно ли денег на счету
- Узнать, наступил ли вечер
- Понять, может ли игрок открыть дверь (есть ли у него ключ ИЛИ он знает код)
Без них программа была бы как робот, который делает одно и то же, не глядя на то, что происходит вокруг. С ними она становится умной!
Синтаксис и примеры кода
В C++ операторы сравнения выглядят так:
== // равно (внимание: два знака равно!)
!= // не равно
> // больше
< // меньше
>= // больше или равно
<= // меньше или равно
А логические операторы соединяют несколько условий:
&& // И (оба условия должны быть true)
|| // ИЛИ (хотя бы одно условие true)
! // НЕ (меняет true на false и наоборот)
Пример 1: Проверка возраста
#include <iostream>
using namespace std;
int main() {
int age = 14;
// Проверяем: возраст больше или равен 18?
if (age >= 18) {
cout << "Ты взрослый!" << endl;
} else {
cout << "Ты ещё ребёнок." << endl;
}
// Вывод: "Ты ещё ребёнок."
// Потому что 14 не больше или равно 18
return 0;
}
Пример 2: Логическое И (&&)
#include <iostream>
using namespace std;
int main() {
bool есть_ключ = true;
bool знает_код = false;
// Чтобы открыть дверь, нужно И ключ, И код
if (есть_ключ && знает_код) {
cout << "Дверь открыта!" << endl;
} else {
cout << "Доступ запрещён." << endl;
}
// Вывод: "Доступ запрещён."
// Потому что знает_код = false
return 0;
}
Пример 3: Логическое ИЛИ (||)
#include <iostream>
using namespace std;
int main() {
int температура = 30; // градусов
// Идём гулять, если тепло ИЛИ сухо
if (температура > 20 || температура < 10) {
cout << "Идём гулять!" << endl;
} else {
cout << "Сидим дома." << endl;
}
// Вывод: "Идём гулять!"
// Потому что 30 > 20 (первое условие true)
return 0;
}
Пример 4: Логическое НЕ (!)
#include <iostream>
using namespace std;
int main() {
bool дождь_идет = false;
// Если НЕ идёт дождь, идём гулять
if (!дождь_идет) {
cout << "Ура, гулять!" << endl;
} else {
cout << "Берём зонт." << endl;
}
// Вывод: "Ура, гулять!"
// Потому что !false = true
return 0;
}
Пример 5: Сложное условие
#include <iostream>
using namespace std;
int main() {
int возраст = 16;
bool есть_права = false;
bool с_родителями = true;
// Можно водить машину, если:
// (возраст >= 18 И есть права) ИЛИ (с родителями)
if ((возраст >= 18 && есть_права) || с_родителями) {
cout << "Можно сесть за руль!" << endl;
} else {
cout << "Нельзя водить." << endl;
}
// Вывод: "Можно сесть за руль!"
// Потому что с_родителями = true
return 0;
}
Сравнение с Python
В Python те же операторы выглядят почти так же, но есть важные отличия:
| Операция | C++ | Python |
|---|---|---|
| Равно | == |
== |
| Не равно | != |
!= |
| Больше | > |
> |
| И | && |
and |
| ИЛИ | || |
or |
| НЕ | ! |
not |
Пример на Python:
age = 14
if age >= 18:
print("Ты взрослый!")
else:
print("Ты ещё ребёнок.")
# Вывод: "Ты ещё ребёнок."
Главное отличие: в Python логические операторы пишутся словами (and, or, not), а в C++ — символами (&&, ||, !). Также в Python не нужны точки с запятой и фигурные скобки — вместо них используются отступы.
Типичные ошибки новичков
Ошибка 1: Путают = и ==
Один знак равно (=) — это присваивание. Два (==) — сравнение.
// НЕПРАВИЛЬНО:
if (x = 5) { ... } // Ошибка! Присваивает 5 переменной x
// ПРАВИЛЬНО:
if (x == 5) { ... } // Проверяет, равно ли x пяти
Ошибка 2: Забывают про приоритет операций
Как в математике: сначала умножение, потом сложение. В логике тоже есть порядок: сначала !, потом &&, потом ||.
// Может быть непонятно:
if (a || b && c) // Сначала выполнится b && c, потом a || результат
// Лучше использовать скобки:
if (a || (b && c)) // Теперь понятно
Ошибка 3: Сравнивают разные типы
int x = 5;
double y = 5.0;
if (x == y) { ... } // Работает, но может быть неожиданно
// Лучше приводить к одному типу:
if (x == (int)y) { ... }
Ошибка 4: Используют = вместо == в условиях
Это самая частая ошибка! Компилятор может не сказать об ошибке, но программа будет работать неправильно.
Ошибка 5: Забывают про логическое НЕ
bool готов = false;
// Сложно читать:
if (готов == false) { ... }
// Лучше:
if (!готов) { ... }
Итог
Операторы сравнения и логические операторы — это основа любого программирования. Они позволяют программе "думать" и принимать решения. Запомни главное:
- Сравнение — это проверка: равно, больше, меньше и т.д.
- Логические операторы — это И, ИЛИ, НЕ, которые соединяют проверки
- В C++ используй
&&,||,!, а в Python —and,or,not - Всегда ставь скобки, чтобы было понятно, что с чем соединяется
- Не путай
=и==— это разные вещи!
Попробуй написать свою программу с условиями. Например, проверку: "Можно ли идти гулять, если на улице не дождь и температура выше 15 градусов?" Удачи!