Username: Password:

.Operadores de atribuição

Existe na linguagem C um conjunto de operadores que realizam uma operação seguida de uma atribuição. Esses operadores não são absolutamente necessários para programar dado que o mesmo efeito pode ser alcançado escrvendo explicitamente a operação e a atribuição. Esta tabela mostra como são usados esses operadores e quais são as atribuições equivalentes :
OperadorExemploEquivalente
++x++;x = x + 1;
--x--;x = x - 1;
+=x += 3;x = x + 3;
-=x -= 55;x = x - 55;
*=x *= 4;x = x * 4;
/=x /= 2;x = x / 2;

Esses operadores são muito usados nos ciclos. Por exemplo, em vez de escrever :

for (i = 0; i < n; i = i + 1) { ...
escreve-se muitas vezes :
for (i = 0; i < n; i++) { ...
A única vantagem desses operadores é que são mais rápidos de escrever do que o seu equivalente que usa o operador e a atribuição explicitamente. Esta vantagem faz que são muito usados e foram integrados em várias linguagens de programação a seguir ao C (Java, C++, javascript, C# etc..).

O símbolo = é também um operador !. Em consequência, uma atribuição tem um valor e pode ser incluída numa expressão. Por exemplo podemos escrever :

int x = y = 1;
«y = 1» provoca como sabemos a copia do valor 1 para a variável y mas, como é uma expressão aritmética, tem um valor. O valor das expressões compostas por uma atribuição é o valor atribuido ou seja o lado direito. Neste caso o valor de y = 1 é portanto 1. Este valor é depois copiado para a variável x. O operador = é portanto associativo à direita ao contrário dos outros operadores aritméticos. A não ser para inicializar variáveis com o mesmo valor, não é aconselhado usar o = como operador, não favorece a legibilidade do programa.