segunda-feira, 1 de novembro de 2010

Outros operadores de atribuição.

Como assim? Existem mais operadores de atribuição além do =?
A linguagem C fornece mais cinco operadores de atribuição, além do tradicional =.
Vamos ao exemplo. Suponha que uma variável a é incrementada em 3 unidades, portanto, a linha de código que define esse incremento é


a = a + 3;


Essa linha pode ser substituída por


a += 3;

Ambas produzem o mesmo resultado, mas a escrita da segunda é facilitada, pois a utilização do valor da variável está implícita no operador de atribuição. Os programadores C utilizam largamente esses operadores de atribuição, os quais existem um para cada operação aritmética definida.
A tabela abaixo apresenta um resumo das expressões e os operadores aritméticos envolvidos.
OperadorExpressão originalExpressão equivalente
+=a = a + n;a += n;
-=a = a - n;a -= n;
*=a = a * n;a *= n;
/=a = a / n;a /= n;
%=a = a % n;a %= n;


Espero ter incrementado o vocabulário da linguagem C com esses novos operadores.

terça-feira, 26 de outubro de 2010

Pré ou pós? Quando usar?

No post anterior falei dos operadores de incremento e decremento. Em todos os exemplos, os operadores aplicados foram pós-fixados, ou seja, aparecem logo após a variável. Naqueles exemplos tanto faz a posição do operador porque o resultado obtido é sempre o mesmo.
Quando utilizamos os operadores de incremento e decremento dentro de comandos mais complexos existe a diferença entre o uso pré-fixado ou pós-fixado. Vejamos o código abaixo para o operador pós-fixado:

int a = 5, b;

b = a++;


Qual o valor das variáveis a e b?
O valor esperado para a é 6 e para b é 5.

Se utilizarmos o operador pré-fixado, conforme exemplo abaixo:

int a = 5, b;

b = ++a;


O valor esperado para ambas as variáveis é 6.
Notaram a diferença?
Quando o operador é pós-fixado, o valor da variável é utilizado no comando e após a conclusão desse comando o valor será atualizado. No primeiro exemplo, o comando é de atribuição, seguido da atualização da variável pelo operador de incremento, uma vez que ele é pós-fixado. Com isso o valor de a, que é cinco, é atribuído à variável b e então a variável a é atualizada.
Quando o operador é pré-fixado, primeiro a variável é atualizada para então utilizar o seu valor. No segundo exemplo percebemos que a variável a é atualizada para seis e então o comando de atribuição é executado, passando para a variável b o valor 6.
Esse comportamento é análogo para os operadores de decremento, só que diminuindo o valor em uma unidade ;)
Em linhas gerais:
Operador pré-fixado, atualiza (incrementa ou decrementa) e depois usa o valor.
Operador pós-fixado, usa o valor e depois atualiza (incrementa ou decrementa).
Espero que isso ajude vocês a compreender melhor esses operadores.