Приоритет оператора определяет группирование термов в выражении. Это влияет на вычисление выражения. Некоторые операторы имеют приоритет над другими.
Например, оператор умножения имеет более высокий приоритет, чем оператор сложения.
Рассмотрим выражение
x = 7 + 3 * 2.
Здесь в x присваивается 13, а не 20. Просто дело в том, что оператор * имеет более высокий приоритет, чем +, поэтому сначала вычисляется 3 * 2, а затем результат прибавляется к 7.
В этой таблице операторы с наивысшим приоритетом показаны в верхней части, а с наименьшим – внизу. Внутри выражения сначала вычисляются операторы с более высоким приоритетом.
Категория | Оператор | Ассоциативность |
---|---|---|
Суффикс | () [] -> . ++ - - | Слева направо |
Унарные | + - ! ~ ++ - - (type)* & sizeof | Справа налево |
Умножение/деление | * / % | Слева направо |
Сложение/вычитание | + - | Слева направо |
Сдвиг | << >> | Слева направо |
Логические | < <= > >= | Слева направо |
Равенство | == != | Слева направо |
Побитовое И | & | Слева направо |
Побитовое Исключающее ИЛИ | ^ | Слева направо |
Побитовое ИЛИ | | | Слева направо |
Логическое И | && | Слева направо |
Логическое ИЛИ | || | Слева направо |
Условное | ?: | Справа налево |
Присвоение | = += -= *= /= %=>>= <<= &= ^= |= | Справа налево |
Запятая | , | Слева направо |
Попробуйте следующий пример, чтобы понять приоритеты операторов, доступных в языке D:
import std.stdio; int main(string[] args) { int a = 20; int b = 10; int c = 15; int d = 5; int e; e = (a + b) * c / d; // ( 30 * 15 ) / 5 writefln("Значение (a + b) * c / d равно : %d", e ); e = ((a + b) * c) / d; // (30 * 15 ) / 5 writefln("Значение ((a + b) * c) / d равно : %d" , e ); e = (a + b) * (c / d); // (30) * (15/5) writefln("Значение (a + b) * (c / d) равно : %d", e ); e = a + (b * c) / d; // 20 + (150/5) writefln("Значение a + (b * c) / d равно : %d" , e ); return 0; }
Когда вы скомпилируете и выполните эту программу, она возвратит следующий результат:
Значение (a + b) * c / d равно : 90 Значение ((a + b) * c) / d равно : 90 Значение (a + b) * (c / d) равно : 90 Значение a + (b * c) / d равно : 50