Операторы сравнения и логические операторы в C#
Что это и зачем?
Представь, что ты играешь в компьютерную игру. Чтобы пройти уровень, тебе нужно проверять разные условия: "Если у героя меньше 10 жизней, то включи защиту" или "Если игрок нажал кнопку И собрал все монеты, открой дверь".
В программировании такие проверки делают операторы сравнения и логические операторы. Они помогают программе "думать" и принимать решения. Без них код был бы просто списком команд, которые выполняются всегда одинаково, а так программа может реагировать на разные ситуации.
Например, ты пишешь калькулятор оценок. Если ученик набрал больше 90 баллов — "Отлично", если меньше 50 — "Плохо". Или проверяешь, может ли пользователь войти в систему: если пароль правильный И аккаунт не заблокирован — пускай.
Операторы сравнения сравнивают числа или текст. Логические операторы соединяют несколько условий в одно. Вместе они — основа любого "умного" кода.
Синтаксис и примеры кода
В C# операторы сравнения выглядят так:
==— равно (внимание: два знака равно, не один!)!=— не равно>— больше<— меньше>=— больше или равно<=— меньше или равно
Логические операторы:
&&— И (оба условия должны быть истинны)||— ИЛИ (хотя бы одно условие истинно)!— НЕ (меняет истину на ложь и наоборот)
Результат сравнения — это всегда true (истина) или false (ложь).
Пример 1: Проверка возраста
int age = 14;
bool canDrive = age >= 18; // false, потому что 14 меньше 18
if (canDrive)
{
Console.WriteLine("Можешь водить машину!");
}
else
{
Console.WriteLine("Подрасти ещё."); // Выполнится это
}
// Объяснение:
// age >= 18 — это сравнение. Оно даёт false.
// if проверяет true/false. Если true — выполняет первый блок, если false — второй.
Пример 2: Проверка логина и пароля
string login = "user123";
string password = "qwerty";
// Проверяем, что логин равен "admin" И пароль равен "12345"
if (login == "admin" && password == "12345")
{
Console.WriteLine("Добро пожаловать, админ!");
}
else
{
Console.WriteLine("Неверный логин или пароль.");
}
// Объяснение:
// && означает "И". Оба условия должны быть true.
// login == "admin" — false (потому что login = "user123")
// Значит всё условие false — идём в else.
Пример 3: Скидка для студентов или пенсионеров
int age = 20;
bool isStudent = true;
// Скидка, если возраст меньше 18 ИЛИ человек студент
if (age < 18 || isStudent)
{
Console.WriteLine("Скидка 50%!");
}
else
{
Console.WriteLine("Полная цена.");
}
// Объяснение:
// || означает "ИЛИ". Достаточно одного true.
// age < 18 — false (20 не меньше 18)
// isStudent — true
// Значит условие true — скидка даётся.
Пример 4: Проверка, что число не равно нулю
int number = 7;
if (number != 0)
{
Console.WriteLine("Число не ноль, можно делить.");
}
else
{
Console.WriteLine("На ноль делить нельзя!");
}
// Объяснение:
// != проверяет "не равно".
// 7 != 0 — это true, поэтому выполняется первый блок.
Пример 5: Сложное условие с НЕ
bool isRaining = false;
bool hasUmbrella = true;
// Если НЕ идёт дождь ИЛИ есть зонт — можно гулять
if (!isRaining || hasUmbrella)
{
Console.WriteLine("Идём гулять!");
}
else
{
Console.WriteLine("Сидим дома.");
}
// Объяснение:
// !isRaining — это "НЕ isRaining". isRaining = false, значит !false = true.
// true || true = true — гуляем.
// Если бы isRaining = true и hasUmbrella = false, то !true = false, false || false = false — сидим дома.
Сравнение с Python
В Python те же операторы выглядят почти так же, но есть пара отличий:
- Вместо
&&пишутand - Вместо
||пишутor - Вместо
!пишутnot - Операторы сравнения такие же:
==,!=,>,<,>=,<=
Пример на Python (тот же, что и в C#):
age = 14
can_drive = age >= 18 # False
if can_drive:
print("Можешь водить машину!")
else:
print("Подрасти ещё.")
# Логические операторы:
login = "user123"
password = "qwerty"
if login == "admin" and password == "12345":
print("Добро пожаловать, админ!")
else:
print("Неверный логин или пароль.")
Главное отличие: в C# логические операторы — это символы (&&, ||, !), а в Python — слова (and, or, not). В остальном логика одинаковая.
Типичные ошибки новичков
-
Путают = и ==
=— это присваивание (положить значение в переменную).
==— это сравнение (проверить, равны ли значения).
Ошибка:if (age = 18)— так нельзя! Надоif (age == 18). -
Забывают про приоритет операций
Сначала выполняются сравнения, потом логические операторы. Но лучше использовать скобки для ясности.
Пример:if (age > 18 && name == "Tom" || score > 100)— непонятно, что имелось в виду. Правильно:if ((age > 18 && name == "Tom") || score > 100). -
Путают && и ||
&&требует, чтобы все условия были истинны.
||требует хотя бы одного истинного.
Ошибка: проверяют "если возраст больше 18 ИЛИ имя 'Tom'", а нужно "И". -
Сравнивают строки неправильно
Строки сравниваются посимвольно. "apple" > "banana" — это false, потому что 'a' меньше 'b'.
Для сравнения строк без учёта регистра используют специальные методы, но это уже сложнее. -
Забывают, что результат сравнения — true/false
Можно записать результат в переменную:bool isAdult = age >= 18;— это работает. Но новички иногда пишутif (age >= 18 == true)— это лишнее, достаточноif (age >= 18).
Итог
Операторы сравнения и логические операторы — это как "мозг" программы. Они позволяют коду реагировать на разные ситуации: проверять возраст, сравнивать пароли, решать, давать скидку или нет.
Запомни главное:
- Сравнения дают true или false.
&&— всё должно быть правдой.||— хотя бы одно правда.!— переворачивает правду в ложь.- Не путай
=и==. - Используй скобки для сложных условий.
Попробуй написать свою программу: спроси у пользователя возраст и скажи, может ли он смотреть фильм с рейтингом 18+. Или проверь, ввел ли он правильный пароль. Чем больше практики, тем быстрее запомнишь!