Главная страница » C# » 48. Логические операторы 2
Логические операторы в C# используются для работы с булевыми (true
/false
) значениями и применяются в условиях, циклах и методах. В первой части мы рассмотрели основные операторы (&&
, ||
, !
). В этой части разберем их расширенные возможности и особенности.
Оператор | Описание | Пример |
---|---|---|
&& (И) | Возвращает true , если оба выражения true | true && false → false |
` | ` (ИЛИ) | |
! (НЕ) | Инвертирует булево значение | !true → false |
^ (Исключающее ИЛИ) | Возвращает true , если только одно из значений true | true ^ false → true |
^
)Оператор ^
(XOR) возвращает true
, если только одно из значений true
.
bool a = true;
bool b = false;
bool result = a ^ b; // true, так как только одно из значений true
Console.WriteLine(result);
a | b | a ^ b |
---|---|---|
false | false | false |
false | true | true |
true | false | true |
true | true | false |
&&
и ||
)Операторы &&
и ||
используют ленивое вычисление (Short-Circuit Evaluation), то есть второе выражение не вычисляется, если его результат уже известен.
&&
:
bool CheckFirst()
{
Console.WriteLine("Проверка первого условия...");
return false;
}
bool CheckSecond()
{
Console.WriteLine("Проверка второго условия...");
return true;
}
if (CheckFirst() && CheckSecond())
{
Console.WriteLine("Оба условия истинны.");
}
else
{
Console.WriteLine("Одно из условий ложно.");
}
Проверка первого условия...
Одно из условий ложно.
Второе условие CheckSecond()
не вычисляется, так как первое уже false
.
||
:
if (true || CheckSecond())
{
Console.WriteLine("Одно из условий уже true.");
}
Метод CheckSecond()
не выполнится, потому что первое выражение уже true
.
&
и |
)Операторы &
и |
выполняют полное вычисление, даже если результат уже известен.
bool a = false, b = true;
if (a & CheckSecond()) // CheckSecond() выполнится всегда
{
Console.WriteLine("Оба условия истинны.");
}
Используйте &
и |
, если вам важно выполнение обоих выражений.
Логические операторы можно комбинировать.
bool hasAccess = true;
bool isAdmin = false;
bool isModerator = true;
if ((hasAccess && isAdmin) || isModerator)
{
Console.WriteLine("Доступ разрешен.");
}
Здесь пользователь получит доступ, если:
hasAccess == true
) и является администратором (isAdmin == true
), илиisModerator == true
).^
(XOR) возвращает true
, если только одно из выражений true
.&&
и ||
используют ленивое вычисление, &
и |
– полное.if
с логическими операторами помогает контролировать выполнение кода.Правильное применение логических операторов делает код читаемым и эффективным! 🚀
Напишите программу, которая запрашивает у пользователя возраст и проверяет, может ли он купить билет в кино:
"Доступ запрещен."
."Можно войти с родителями."
."Доступ разрешен."
.Пример кода:
using System;
class Program
{
static void Main()
{
Console.Write("Введите ваш возраст: ");
int age = Convert.ToInt32(Console.ReadLine());
Console.Write("Вы с родителями? (yes/no): ");
bool withParents = Console.ReadLine().ToLower() == "yes";
if (age < 12)
{
Console.WriteLine("Доступ запрещен.");
}
else if (age >= 12 && age < 18 && withParents)
{
Console.WriteLine("Можно войти с родителями.");
}
else if (age >= 18)
{
Console.WriteLine("Доступ разрешен.");
}
}
}
Попробуйте написать и запустить этот код, чтобы убедиться в правильности выполнения операций и особенностях работы с числами с плавающей точкой.
Телефон: +375 33 910-08-92
Email: info@codefor.tech
Адрес: г. Барановичи, ул. Пирогова, д. 7
© 2024-2025 Все права защищены. CodeFor.