AjLearning
AjLearning 0.1    





Introducción a Java - Precedencia y asociatividad de operadores

Curso Introducción a Java

    Anterior     Siguiente

Ahora que vimos todo tipo de operadores, veamos cómo se evalúan cuando intervienen
varios de ellos en una expresión. Si escribimos:

a+b*2 estamos usando variables y constantes, pero también operadores, en este caso, operadores
aritméticos, como el + para sumar, y el * (asterisco) para multiplicar. Estos operadores
se aplican en un orden, y tiene precedencia y asociatividad definida. Entonces, la
expresión de arriba se evalúa como:
a+(b*2) es decir, a se suma al doble de b, y no como:
(a+b)*2 Esto es así, porque el operador * (de multiplicar) tiene precedencia sobre el operador +
(de suma). Podemos introducir el concepto de asociatividad de un operador,
mediante un ejemplo. La expresión:
a-5-3 tiene dos operadores - (de resta), que tienen, por supuesto, la misma precedencia.
Como el operador - tiene asociatividad izquierda, la expresión de arriba se evalúa como:
(a-5)-8 en vez de la totalmente distinta:
a-(5-8)
[TBD Tabla de operadores]

Todos los operadores binarios tienen asociatividad izquierda, excepto la asignación,
que la tiene derecha. Así:
a=b=c+1 se evalúa como:
a=(b=c+1) Hemos visto en las aclaraciones de arriba, que podemos usar paréntesis, para aclarar
o cambiar el significado de una expresión. Se recomienda su uso, cuando una expresión
es compleja o induce a confusión, si no se recuerdan las reglas de precedencia,
que no son simples de recordar.

Orden de evaluación


Los operandos de una expresión, se evalúan de izquierda a derecha . Así :
func1()+func2() es una expresión que provoca la evaluación, en primer lugar, de func1(), y
luego func2(). Esto es importante en el caso de producir algún efecto en esas
funciones, como salidas por pantalla. En general se evalúan todos los operandos,
salvo en el caso de expresiones que involucren el OR lógico || o el AND lógico &&.

Programado por Angel J. Lopez www.ajlopez.com