|
Normalmente,
las expresiones con operadores se evalúan de izquierda
a derecha.
Sin embargo
no todos los operadores tienen la misma prioridad, algunos
se evalúan antes que otros.
Esta propiedad
de los operadores se conoce como precedencia o prioridad.También
hay algunos operadores que se evalúan y se asocian de derecha
a izquierda.
Veremos ahora
las prioridades de todos los operadores. Considera esta tabla como
una referencia, no es necesario aprenderla de memoria, en caso de
duda siempre se puede consultar, incluso puede que cambie ligeramente
según el compilador, y en último caso veremos sistemas
para eludir la precedencia.
|
|
|
La
tabla muestra las precedencias de los operadores en orden decreciente,
los de mayor precedencia en la primera fila. Dentro de la misma
fila, la prioridad se decide por el orden de asociatividad.
int a, b, c, d, e;
b
=c =d =e =10;
El
operador de asignación "=" se asocia de derecha
a izquierda, es decir, primero se aplica "e = 10", después
"d = e", etc. O sea, a todas las variables se les asigna
el mismo valor: 10.
a
=b *c +d *e;
El
operador * tiene mayor precedencia que + e =, por lo tanto se aplica
antes, después se aplica el operador +, y por último
el =. El resultado final será asignar a "a" el
valor 200.
int
m[10] = {10,20,30,40,50,60,70,80,90,100}, *f;
f = &m[5];
++*f;
cout << *f << endl;
La
salida de este ejemplo será, 61, los operadores unarios tienen
todos la misma precedencia, y se asocian de derecha a izquierda.
Primero se aplica el *, y después el incremento al contenido
de f.
f
= &m[5];
*f--;
cout << *f << endl;
La
salida de este ejemplo será, 50. Primero se aplica el decremento
al puntero, y después el *.
a
=b *(c +d)*e;
Ahora
el operador de mayor peso es (), ya que los paréntesis están
en el grupo de mayor precedencia. Todo lo que hay entre los paréntesis
se evalúa antes que cualquier otra cosa. Primero se evalúa
la suma, y después las multiplicaciones. El resultado será
asignar a la variable "a" el valor 2000.
Este es el sistema para eludir las precedencias por defecto, si
queremos evaluar antes una suma que un producto, debemos usar paréntesis.
|
|