Comprenda la precedencia y asociatividad de operadores en C: Guía clara
Precedencia de operadores
La precedencia de 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. Luego se evalúa la expresión que involucra - ya que la precedencia de - es mayor que la de =.
Aquí tiene una tabla de precedencia de operadores de mayor a menor. La propiedad de asociatividad se discutirá próximamente.
Tabla de Precedencia y Asociatividad de Operadores
| Operador | Significado del operador | Asociatividad |
|---|---|---|
| () [] -> . | Llamada funcional Referencia a elemento de array Selección indirecta de miembro Selección directa de miembro | Izquierda a derecha |
| ! ~ + - ++ -- & * sizeof (type) | Negación lógica Complemento bit a bit (1's) Más unario Menos unario Incremento Decremento Desreferencia (Dirección) Referencia a puntero Devuelve el tamaño de un objeto Conversión de tipo (cast) | Derecha a izquierda |
| * / % | Multiplicar Dividir Residuo | Izquierda a derecha |
| + - | Suma binaria (Adición) Resta binaria (Sustracción) | Izquierda a derecha |
| << >> | Desplazamiento a la izquierda Desplazamiento a la derecha | Izquierda a derecha |
| < <= > >= | Menor que Menor o igual que Mayor que Mayor o igual que | Izquierda a derecha |
| == != | Igual a No igual a | Izquierda a derecha |
| & | AND bit a bit | Izquierda a derecha |
| ^ | OR exclusivo bit a bit | Izquierda a derecha |
| | | OR bit a bit | Izquierda a derecha |
| && | AND lógico | Izquierda a derecha |
| || | OR lógico | Izquierda a derecha |
| ?: | Operador condicional | Derecha a izquierda |
| = *= /= %= += -= &= ^= |= <<= >>= | Asignación simple Asignar producto Asignar cociente Asignar residuo Asignar suma Asignar diferencia Asignar AND bit a bit Asignar XOR bit a bit Asignar OR bit a bit Asignar desplazamiento izquierda Asignar desplazamiento derecha | Derecha a izquierda |
| , | Separador de expresiones | 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 a b, y no al revés. Es porque la asociatividad del operador = es de derecha a izquierda.
Además, si hay dos operadores de la misma precedencia (prioridad), 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 sentencia tiene múltiples operadores, puede usar paréntesis () para hacer el código más legible.
Tabla de contenidos
Lenguaje C
- Fundamentos de C#: Sintaxis Básica y Conceptos de POO
- Dominando Arrays Multidimensionales en C++: Declaración, Inicialización y Recorrido
- Dominando enums en C: Definición, declaración y operaciones de banderas
- Dominando std::map en C++: Guía completa con ejemplos de código
- Dominando la Sobrecarga en C++: Funciones y Operadores Explicados
- Métodos en C#: Definición, llamada y uso de funciones
- Domine Entity Framework: 50 preguntas clave de entrevista y respuestas (2026)
- Dominando la Recursión en C++: Conceptos, Ejemplos y Mejores Prácticas
- Entendiendo las reglas de alcance en C: Variables locales, globales y formales
- Dominando la Sentencia break en C++
- Cadenas en C hechas fáciles: Declaración, entrada, salida y funciones de biblioteca