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).