Prioridad de operadores en C
La precedencia del operador determina la agrupación de términos en una expresión y decide cómo se evalúa una expresión. Algunos operadores tienen mayor precedencia que otros; por ejemplo, el operador de multiplicación tiene mayor precedencia que el operador de suma.
Por ejemplo, x = 7 + 3 * 2; aquí, x se asigna 13, no 20 porque el operador * tiene una precedencia mayor que +, por lo que primero se multiplica por 3 * 2 y luego 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 evaluarán 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 de los operadores en C:
#include <stdio.h>
main() {
int a = 20;
int b = 10;
int c = 15;
int d = 5;
int e;
e = (a + b) * c / d; // ( 30 * 15 ) / 5
printf("Value of (a + b) * c / d is : %d\n", e );
e = ((a + b) * c) / d; // (30 * 15 ) / 5
printf("Value of ((a + b) * c) / d is : %d\n" , e );
e = (a + b) * (c / d); // (30) * (15/5)
printf("Value of (a + b) * (c / d) is : %d\n", e );
e = a + (b * c) / d; // 20 + (150/5)
printf("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