C# Academy · Урок

Приоритет и ассоциативность операторов

Разберитесь в порядке вычисления и используйте скобки.

Урок 4 из 413 шагов

«Приоритет и ассоциативность операторов» — бесплатный урок C# Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 4 уроков всего.

Почему важен приоритет

Когда в выражении встречаются разные операторы, C# определяет порядок их выполнения с помощью приоритета. Операторы с более высоким приоритетом связываются сильнее и выполняются первыми.

using System;

class Program {
    static void Main() {
        Console.WriteLine(2 + 3 * 4);
    }
}

Умножение выполняется раньше сложения

* / % имеют более высокий приоритет, чем + -, поэтому выполняются первыми, как на уроках математики.

using System;

class Program {
    static void Main() {
        Console.WriteLine(10 - 2 * 3);
        Console.WriteLine(20 / 4 + 1);
    }
}

Скобки меняют порядок

Скобки имеют наивысший приоритет. Используйте их, чтобы задать нужный порядок и сделать намерение понятным.

using System;

class Program {
    static void Main() {
        Console.WriteLine((2 + 3) * 4);
        Console.WriteLine(2 + (3 * 4));
    }
}

Сравнение и арифметика

Арифметические операции выполняются до сравнения. В выражении a + b > c сначала происходит сложение, а затем сравнение.

using System;

class Program {
    static void Main() {
        int a = 3, b = 4, c = 5;
        Console.WriteLine(a + b > c);
    }
}

Порядок логических операторов

&& имеет более высокий приоритет, чем ||. В выражении a || b && c сначала связывается AND.

using System;

class Program {
    static void Main() {
        bool r = true || false && false;
        Console.WriteLine(r);
    }
}

Краткая схема приоритетов

Приблизительный порядок от высокого к низкому: скобки, унарные операторы (! ~ -), * / %, + -, сдвиги, сравнения, равенство, побитовые операторы, &&, ||, затем присваивание.

using System;

class Program {
    static void Main() {
        int x = 1 + 2 << 1;
        Console.WriteLine(x);
    }
}

Ассоциативность: слева направо

Когда у операторов одинаковый приоритет, направление определяет ассоциативность. Большинство бинарных операторов ассоциативны слева направо: 10 - 4 - 2 — это (10 - 4) - 2.

using System;

class Program {
    static void Main() {
        Console.WriteLine(10 - 4 - 2);
        Console.WriteLine(100 / 5 / 2);
    }
}

Присваивание с ассоциативностью справа налево

Присваивание ассоциативно справа налево. В выражении a = b = 5 сначала число 5 присваивается b, а затем полученный результат — a.

using System;

class Program {
    static void Main() {
        int a, b;
        a = b = 5;
        Console.WriteLine(a + " " + b);
    }
}

Унарные операторы связываются сильнее

Унарные !, ~ и отрицание выполняются до бинарных операторов. В выражении -3 + 2 сначала отрицается 3.

using System;

class Program {
    static void Main() {
        Console.WriteLine(-3 + 2);
        Console.WriteLine(!false && true);
    }
}

Условный оператор

Тернарный оператор ?: имеет низкий приоритет, расположенный сразу над присваиванием. Заключайте сложные условия в скобки для безопасности.

using System;

class Program {
    static void Main() {
        int n = 7;
        string s = n % 2 == 0 ? "even" : "odd";
        Console.WriteLine(s);
    }
}

Ясность важнее хитрости

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

using System;

class Program {
    static void Main() {
        int a = 2, b = 3, c = 4;
        int result = (a * b) + (c * 2);
        Console.WriteLine(result);
    }
}

Быстрая проверка

Проверьте своё понимание приоритета и ассоциативности.

Повторение

Приоритет определяет, какие операторы выполняются первыми: * и / имеют более высокий приоритет, чем + и -, а скобки имеют приоритет над всеми операторами. Ассоциативность разрешает неоднозначность между операторами с одинаковым приоритетом: большинство выполняется слева направо, а присваивание — справа налево.

Если Вы сомневаетесь, добавьте скобки для ясности.

Можно начать бесплатно

Изучай C# с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
93
Уроки
346

Часто задаваемые вопросы

Урок «Приоритет и ассоциативность операторов» бесплатный?

Да — полный текст урока «Приоритет и ассоциативность операторов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 4 уроков всего.

Чему я научусь в уроке «Приоритет и ассоциативность операторов»?

Разберитесь в порядке вычисления и используйте скобки. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C# Academy?

Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Приоритет и ассоциативность операторов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C# Academy?

Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Арифметические операторы и операторы присваивания
  2. Операторы сравнения и логические операторы
  3. Побитовые операторы и операторы сдвига
  4. Приоритет и ассоциативность операторов
← Назад к C# Academy