Operadores de atribuição
Anteriormente vimos como modificar um objeto com os operadores ++ e --,
porém esses operadores só incrementam ou decrementam por 1. Para modificar um
objeto de forma mais complexa, é necessário utilizar operadores de atribuição.
Assim como o nome sugere, operadores de atribuição atribuem um novo valor a um
objeto.
Atribuição simples
O operador = (atribuição simples) atribui ao operando à esquerda o valor da
expressão à direita.
int x = -3;
printf("%d\n", x);
x = 5; // x agora vale 5
printf("%d\n", x);
x = x + x; // x agora vale 10 (5 + 5)
printf("%d\n", x);
-3
5
10
Atribuição composta
Os operadores de atribuição composta existem para simplificar atribuições do
formato x = x op expr tal que expr seja uma expressão e op seja um dos
operadores binários *, /, %, +, -, <<, >>, &, ^ ou |. Com
atribuição composta x = x op expr pode ser reescrito como x op= expr.
Isso quer dizer que a expressão a = a + b pode ser reescrita como a += b, e
x = x * (25 + y) como x *= 25 + y.
int x = -3;
printf("%d\n", x);
x += 8; // x agora vale 5 (-3 + 8)
printf("%d\n", x);
x *= 2; // x agora vale 10 (5 * 2)
printf("%d\n", x);
-3
5
10
Os operadores de atribuição possuem precedência menor que todos os outros
operadores vistos até agora, portanto a + b = c - d é equivalente a
(a + b) = (c - d).