Elementor Header #8

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

1. Введение

Логические операторы используются для выполнения операций над булевыми значениями (true или false). Они позволяют создавать сложные логические выражения и управлять выполнением кода на основе условий.


2. Основные логические операторы

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

3. Логическое И (&&)

Оператор && возвращает true, если оба условия истинны.

Пример:

				
					bool isAdult = true;
bool hasTicket = false;

if (isAdult && hasTicket)
{
    Console.WriteLine("Можно войти.");
}
else
{
    Console.WriteLine("Вход запрещен.");
}
// Выведет: "Вход запрещен."

				
			

Так как hasTicket == false, выражение isAdult && hasTicket возвращает false.


4. Логическое ИЛИ (||)

Оператор || возвращает true, если хотя бы одно из условий истинно.

Пример:

				
					bool isWeekend = false;
bool isHoliday = true;

if (isWeekend || isHoliday)
{
    Console.WriteLine("Сегодня выходной!");
}
else
{
    Console.WriteLine("Сегодня рабочий день.");
}
// Выведет: "Сегодня выходной!"

				
			

Так как isHoliday == true, выражение isWeekend || isHoliday становится true.


5. Логическое НЕ (!)

Оператор ! меняет значение на противоположное.

Пример:

				
					bool isRainy = true;

if (!isRainy)
{
    Console.WriteLine("Можно идти гулять!");
}
else
{
    Console.WriteLine("Лучше взять зонт.");
}
// Выведет: "Лучше взять зонт."

				
			

Оператор !isRainy инвертирует true в false.


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

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

Пример:

				
					bool a = true;
bool b = false;

Console.WriteLine(a ^ b); // true
Console.WriteLine(a ^ a); // false
Console.WriteLine(b ^ b); // false

				
			

Работает по принципу:

  • true ^ false → true
  • false ^ true → true
  • true ^ true → false
  • false ^ false → false

7. Приоритет логических операторов

Приоритет выполнения операторов (от более высокого к низкому):

  1. ! (НЕ)
  2. && (И)
  3. || (ИЛИ)
  4. ^ (исключающее ИЛИ)

Пример приоритета:

				
					bool result = true || false && false;
// Выполняется так: true || (false && false) → true || false → true
Console.WriteLine(result); // true

				
			

Используйте скобки для явного управления порядком:

				
					bool result = (true || false) && false;
// (true || false) → true, затем true && false → false
Console.WriteLine(result); // false

				
			

8. Короткое замыкание (short-circuiting)

C# использует короткое замыкание в операторах && и ||:

  • &&: если первый операнд false, второй не проверяется.
  • ||: если первый операнд true, второй не проверяется.

Пример:

				
					bool Check()
{
    Console.WriteLine("Функция вызвана!");
    return true;
}

bool result = false && Check(); // Check() не вызывается, так как `false && ...` всегда `false`
Console.WriteLine(result); // false

				
			

Заключение

  • Логические операторы (&&, ||, !, ^) позволяют строить сложные условия.
  • Важно понимать приоритет выполнения операторов.
  • Использование скобок делает код понятнее.
  • Короткое замыкание (short-circuiting) помогает оптимизировать выполнение условий.

Логические операторы — важный инструмент для управления потоком выполнения программ в C#.

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

Напишите программу, которая проверяет, может ли пользователь получить доступ к сервису.

  • Если isRegistered == true и (isAdmin == true или hasSubscription == true), доступ разрешен.
  • В противном случае — доступ запрещен.

Пример:

				
					using System;

class Program
{
    static void Main()
    {
        bool isRegistered = true;
        bool isAdmin = false;
        bool hasSubscription = true;

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

				
			

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

logo