Главная страница » 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.
Язык сайта: