Programación D - Prioridad de operadores
La precedencia del operador determina la agrupación de términos en una expresión. Esto afecta cómo se evalúa una expresión. Ciertos operadores tienen prioridad sobre otros.
Por ejemplo, el operador de multiplicación tiene mayor precedencia que el operador de suma.
Consideremos una expresión
x = 7 + 3 * 2.
Aquí, a x se le asigna 13, no 20. La simple razón es que el operador * tiene mayor precedencia que +, por lo tanto, 3 * 2 se calcula primero y luego el resultado se suma a 7.
Aquí, los operadores con mayor precedencia aparecen en la parte superior de la tabla, los que tienen la menor prioridad aparecen en la parte inferior. Dentro de una expresión, los operadores de mayor precedencia se evalúan primero.
Categoría | Operador | Asociatividad |
---|---|---|
Sufijo | () [] ->. ++ - - | De izquierda a derecha |
Unario | + -! ~ ++ - - (tipo) * & sizeof | De derecha a izquierda |
Multiplicativo | * /% | De izquierda a derecha |
Aditivo | + - | De izquierda a derecha |
Cambio | << >> | De izquierda a derecha |
Relacional | <<=>> = | De izquierda a derecha |
Igualdad | ==! = | De izquierda a derecha |
Y bit a bit | Y | De izquierda a derecha |
XOR bit a bit | ^ | De izquierda a derecha |
O bit a bit | | | De izquierda a derecha |
Y lógico | && | De izquierda a derecha |
OR lógico | || | De izquierda a derecha |
Condicional | ?: | De derecha a izquierda |
Asignación | = + = - = * = / =% = >> = << = & = ^ = | = | De derecha a izquierda |
Coma | , | De izquierda a derecha |
Ejemplo
Pruebe el siguiente ejemplo para comprender la precedencia del operador disponible en el lenguaje de programación 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("Value of (a + b) * c / d is : %d\n", e );
e = ((a + b) * c) / d; // (30 * 15 ) / 5
writefln("Value of ((a + b) * c) / d is : %d\n" , e );
e = (a + b) * (c / d); // (30) * (15/5)
writefln("Value of (a + b) * (c / d) is : %d\n", e );
e = a + (b * c) / d; // 20 + (150/5)
writefln("Value of a + (b * c) / d is : %d\n" , e );
return 0;
}
Cuando compila y ejecuta el programa anterior, produce el siguiente resultado:
Value of (a + b) * c / d is : 90
Value of ((a + b) * c) / d is : 90
Value of (a + b) * (c / d) is : 90
Value of a + (b * c) / d is : 50