Menu
Coddy logo textTech

Operator Precedence

Часть раздела Логика и управление потоком путешествия по C# на Coddy — урок 38 из 66.

Приоритет операторов определяет порядок, в котором операторы вычисляются в выражении. Понимание приоритета крайне важно для написания правильных логических выражений.

Посмотрите на этот пример:

int result = 5 + 3 * 2;

Каково значение result? Оно равно 11, а не 16, потому что умножение имеет более высокий приоритет, чем сложение.

Вот упрощённый порядок приоритетов (от высшего к низшему):

  1. Скобки ()
  2. Умножение/Деление * / %
  3. Сложение/Вычитание + -
  1. Операторы сравнения < > <= >=
  2. Операторы равенства == !=
  1. Логическое И &&
  2. Логическое ИЛИ ||
  3. Операторы присваивания = += -= и т. д.

Давайте посмотрим, как это применяется:

bool result = 5 > 3 && 10 < 20 || 7 == 8;

Сначала вычисляются сравнения: 5 > 3true, 10 < 20true, а 7 == 8false.
Затем логическое И: true && truetrue.
Наконец, логическое ИЛИ: true || falsetrue.

Итак, результат — true.

Используйте скобки, чтобы сделать код более ясным:

bool result = (5 > 3 && 10 < 20) || (7 == 8);
challenge icon

Задание

Легко

Создайте метод с именем EvaluateExpression, который принимает три целых числа (a, b, c) и возвращает булевое значение.

Ваш метод должен возвращать результат этого выражения:
a > b || a == c && b < c

Затем создайте другой метод с именем EvaluateWithParentheses, который вычисляет:
(a > b || a == c) && b < c

Ваша программа должна читать три целых числа из консоли и выводить результаты обоих вычислений на отдельных строках.

Шпаргалка

Приоритет операторов определяет порядок, в котором операторы вычисляются в выражении.

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

  1. Скобки ()
  2. Умножение/Деление * / %
  3. Сложение/Вычитание + -
  4. Операторы сравнения < > <= >=
  5. Операторы равенства == !=
  6. Логическое И &&
  7. Логическое ИЛИ ||
  8. Операторы присваивания = += -= и т.д.

Пример:

int result = 5 + 3 * 2; // result равен 11, а не 16

Сложное логическое выражение:

bool result = 5 > 3 && 10 < 20 || 7 == 8;
// Вычисляется как: true && true || false = true || false = true

Используйте скобки для ясности:

bool result = (5 > 3 && 10 < 20) || (7 == 8);

Попробуйте сами

using System;

class Program
{
    public static bool EvaluateExpression(int a, int b, int c)
    {
        // Напишите свой код здесь
    }
    
    public static bool EvaluateWithParentheses(int a, int b, int c)
    {
        // Напишите свой код здесь
    }
    
    static void Main(string[] args)
    {
        Console.WriteLine("Enter three integers:");
        int a = int.Parse(Console.ReadLine());
        int b = int.Parse(Console.ReadLine());
        int c = int.Parse(Console.ReadLine());
        
        // Вызовите свои методы и выведите результаты
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком