⚙️ C++

Операторы сравнения и логические операторы в 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 градусов?" Удачи!