Precedencia de operadores
Una expresión está compuesta por operadores, variables y constantes. Para simplificar, podemos pensar que la forma en la que C evalúa esta expresión es dividiendo el todo en subexpresiones. Las reglas que definen que subexpresión evaluar primero, se denominan reglas de precedencia. Aunque siempre podemos alterar dichas reglas mediante la utilización de paréntesis. En la siguiente tabla detallamos la precedencia entre los operadores de C.
Tabla 3.6: Precedencia de
( ) [ ] - . ! ++ * & sizeof (operadores unarios) * / % + - == != & && ?: = += -= *= /= %= ,
Menor precedencia
Precedencia de operadores
La interpretación de cualquier expresión en C++ está determinada por la precedencia y asociatividad de los operadores en dicha expresión. Cada operador tiene una precedencia, y los operadores en una expresión se evalúan en orden de mayor a menor precedencia. La evaluación de operadores con la misma precedencia viene determinada por su asociatividad. Y, al igual que en matemáticas, los paréntesis anulan las reglas de precedencia.
En la siguiente tabla se listan los operadores en C++, su precedencia y su asociatividad. Los operadores se listan en orden de prioridad decreciente (los situados más arriba tienen mayor prioridad). Los operadores en la misma línea horizontal tienen la misma precedencia.
Operador Propósito Asociatividad
[] Índices De izquierda a derecha
() Llamada a función De izquierda a derecha
++ Postincremento De izquierda a derecha
— Postdecremento De izquierda a derecha
sizeof Tamaño de un objeto De derecha a izquierda
++ Preincremento De derecha a izquierda
— Predecremento De derecha a izquierda
- & + - ! ~ Operadores unarios De derecha a izquierda
new Crea un objeto De derecha a izquierda
delete Borra un objeto De derecha a izquierda
() Conversión de tipo (type cast) De derecha a izquierda
- / % Operadores multiplicativos De izquierda a derecha
+ - Operadores aditivos De izquierda a derecha
« » Operadores bitwise De izquierda a derecha
< > <= >= Operadores de relación De izquierda a derecha
== != Operadores de igualdad De izquierda a derecha
& Y bitwise De izquierda a derecha
^ bitwise O exclusivo De izquierda a derecha
| bitwise O inclusivo De izquierda a derecha
&& Y lógico De izquierda a derecha
?: Operador condicional De derecha a izquierda
= *= /= += -= >*gt;=
&= ^= |= %= <<= Operadores de asignación De derecha a izquierda
, Operador coma De derecha a izquierda