Elementor Header #8

48. Логические операторы 2

1. Введение

Логические операторы в C# используются для работы с булевыми (true/false) значениями и применяются в условиях, циклах и методах. В первой части мы рассмотрели основные операторы (&&, ||, !). В этой части разберем их расширенные возможности и особенности.


2. Краткий обзор логических операторов

ОператорОписаниеПример
&& (И)Возвращает true, если оба выражения truetrue && false → false
` ` (ИЛИ)
! (НЕ)Инвертирует булево значение!true → false
^ (Исключающее ИЛИ)Возвращает true, если только одно из значений truetrue ^ false → true

3. Исключающее ИЛИ (^)

Оператор ^ (XOR) возвращает true, если только одно из значений true.

Пример:

				
					bool a = true;
bool b = false;
bool result = a ^ b; // true, так как только одно из значений true
Console.WriteLine(result);

				
			
aba ^ b
falsefalsefalse
falsetruetrue
truefalsetrue
truetruefalse

4. Ленивое вычисление (&& и ||)

Операторы && и || используют ленивое вычисление (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.


5. Полное вычисление (& и |)

Операторы & и | выполняют полное вычисление, даже если результат уже известен.

Пример:

				
					bool a = false, b = true;

if (a & CheckSecond()) // CheckSecond() выполнится всегда
{
    Console.WriteLine("Оба условия истинны.");
}

				
			

Используйте & и |, если вам важно выполнение обоих выражений.


6. Логические операторы в сложных выражениях

Логические операторы можно комбинировать.

Пример:

				
					bool hasAccess = true;
bool isAdmin = false;
bool isModerator = true;

if ((hasAccess && isAdmin) || isModerator)
{
    Console.WriteLine("Доступ разрешен.");
}

				
			

Здесь пользователь получит доступ, если:

  1. Он имеет доступ (hasAccess == true) и является администратором (isAdmin == true), или
  2. Он модератор (isModerator == true).

Заключение

  • Оператор ^ (XOR) возвращает true, если только одно из выражений true.
  • && и || используют ленивое вычисление, & и | – полное.
  • Логические операторы можно комбинировать в сложных выражениях.
  • Использование if с логическими операторами помогает контролировать выполнение кода.

Правильное применение логических операторов делает код читаемым и эффективным! 🚀

Тестовое задание

Напишите программу, которая запрашивает у пользователя возраст и проверяет, может ли он купить билет в кино:

  • Если возраст меньше 12, выводится "Доступ запрещен.".
  • Если возраст 12-17 и пользователь с родителями, выводится "Можно войти с родителями.".
  • Если возраст 18 и больше, выводится "Доступ разрешен.".

Пример кода:

				
					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("Доступ разрешен.");
        }
    }
}

				
			

Попробуйте написать и запустить этот код, чтобы убедиться в правильности выполнения операций и особенностях работы с числами с плавающей точкой.

logo