Associatividade de operadores
Quando várias operações têm a mesma precedência, geralmente as agrupamos da esquerda para a direita, i.e. são associativas-à-esquerda.
Associatividade à esquerda
Como os operadores binários +
e -
possuem a mesma precedência e são
associativos-à-esquerda, ambas as expressões abaixo são equivalentes.
a + b + c - d - e
(((a + b) + c) - d) - e
Os operadores binários *
, /
e %
possuem a mesma precedência e também
associatividade à esquerda, portanto a * b / c
é o mesmo que (a * b) / c
.
Operações são primeiro agrupadas de acordo com a precedência, e depois de acordo
com a associatividade. Por isso a + b * c / d
é equivalente a
a + ((b * c) / d)
e não ((a + b) * c) / d
.
Associatividade à direita
Todos os operadores de atribuição possuem associatividade à direita. Isso
significa que a = b = c
é equivalente a a = (b = c)
.
Como os operadores de atribuição possuem a mesma precedência, a = b *= c += d
é equivalente a a = (b *= (c += d))
.