En este tutorial, aprenderá sobre la precedencia y la asociatividad de los operadores con la ayuda de ejemplos.
Prioridad de operadores
La precedencia de los operadores determina qué operador se ejecuta primero si hay más de un operador en una expresión.
Consideremos un ejemplo:
int x = 5 - 17* 6;
En C, la precedencia de *
es mayor que -
y =
. Por lo tanto, 17 * 6
se evalúa primero. Entonces la expresión que involucra -
se evalúa ya que la precedencia de -
es mayor que la de =
.
Aquí hay una tabla de precedencia de operadores de mayor a menor. La propiedad de la asociatividad se discutirá en breve.
Tabla de precedencia y asociatividad de operadores
Operador | Significado de operador | Asociatividad |
---|---|---|
() () -> . | Llamada funcional Referencia de elementos de matriz Selección indirecta de miembros Selección directa de miembros | De izquierda a derecha |
! ~ + - ++ - & * sizeof (tipo) | Negación lógica bit a bit (1 's) complementan Unario más unarios menos Incremento Decremento Desreferencia (Dirección) puntero de referencia devuelve el tamaño de un objeto Typecast (conversión) | De derecha a izquierda |
* / % | Multiplicar dividir el resto | De izquierda a derecha |
+ - | Binario más (suma) Binario menos (resta) | De izquierda a derecha |
<< >> | Desplazamiento a la izquierda Desplazamiento a la derecha | De izquierda a derecha |
< <= > > = | Menor que Menor que o igual Mayor que Mayor o igual que | De izquierda a derecha |
== ! = | Igual a No igual a | De izquierda a derecha |
Y | Y bit a bit | De izquierda a derecha |
^ | OR exclusivo 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 |
?: | Operador condicional | De derecha a izquierda |
= * = / = % = + = - = & = = | = << = >> = | Asignación simple Asignar producto Asignar cociente Asignar resto Asignar suma Asignar diferencia Asignar bit a bit Y Asignar bit a bit XOR Asignar bit a bit O Asignar desplazamiento a la izquierda Asignar desplazamiento a la derecha | De derecha a izquierda |
, | Separador de expresiones | De izquierda a derecha |
Asociatividad de operadores
La asociatividad de los operadores determina la dirección en la que se evalúa una expresión. Por ejemplo,
b = a;
Aquí, el valor de a se asigna ab, y no al revés. Es porque la asociatividad del =
operador es de derecha a izquierda.
Además, si dos operadores con la misma precedencia (prioridad) están presentes, la asociatividad determina la dirección en la que se ejecutan.
Consideremos un ejemplo:
1 == 2! = 3
Aquí, los operadores ==
y !=
tienen la misma precedencia. Y su asociatividad es de izquierda a derecha. Por lo tanto, 1 == 2
se ejecuta primero.
La expresión anterior es equivalente a:
(1 == 2)! = 3
Nota: Si una declaración tiene varios operadores, puede usar paréntesis ()
para hacer que el código sea más legible.