cpp

Приоритет выполнения операторов

В какой последовательности будет вычисляться это выражение?

var x int
x = 5 + 10 * 3 / 2
fmt.Println(x) // 20

Это зависит от приоритета выполнения операторов. В данном случае последовательность вычисления выражения будет следующей:

  • Число 10 будет умножено на 3, т. к. приоритет оператора умножения выше приоритета оператора сложения.
  • Полученное значение будет поделено на 2, поскольку приоритет оператора деления равен приоритету оператора умножения (а операторы с равными приоритетами выполняются слева направо), но выше чем у оператора сложения.
  • К полученному значению будет прибавлено число 5, т. к. оператор присваивания = имеет наименьший приоритет.
  • Значение будет присвоено переменной x.

С помощью скобок можно изменить последовательность вычисления выражения:

var x int
x = (5 + 10) * 3 / 2
fmt.Println(x) // 22

Теперь порядок вычислений будет другим:

  • К числу 5 будет прибавлено 10.
  • Полученное значение будет умножено на 3.
  • Полученное значение будет поделено на 2.
  • Значение будет присвоено переменной x.

Перечислим операторы в порядке убывания приоритета:

  • *, &, +, - — разыменование, взятие адреса, унарный плюс, унарный минус;
  • *, /, %, <<, >>, &, &^ — умножение, деление, остаток от деления, двоичные сдвиги, двоичное И, двоичное И НЕ;
  • +, , ^, | — сложение, вычитание, двоичное исключающее ИЛИ, двоичное ИЛИ;
  • <, <=, >, >=, ==, != — операторы сравнения;
  • && — логическое И;
  • || — логическое ИЛИ;
  • =, +=, -=, *=, /=, %= — присваивание.

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Реквизиты

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp