C Precedencia y asociatividad de operadores: definición y ejemplos

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 * 6se 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 == 2se 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.

Articulos interesantes...