Приоритет операторов


Предыдущая страница

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

Например, оператор умножения имеет более высокий приоритет, чем оператор сложения.

Рассмотрим выражение

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

Предыдущая страница
d_programming_operators.htm