Qual a diferença entre x++ e ++x

É bastante comum em algum momento que se está aprendendo uma linguagem que possua o operador de incremento, como é o caso da linguagem C, a pessoa se perceber da forma diferente de uso do operador e se perguntar se existe alguma diferença.

Muitas pessoas não percebem a diferença entre essas duas formas de uso do operador de incremento, isso porque aprendem o uso do operador  aplicando em situações onde não existe qualquer efeito da diferença. Para exemplificar, considere o código abaixo.

Veja que nesse código, as variáveis utilizam o operador de incremento antes e depois da variável e o resultado é exatamente o mesmo, onde ambas as variáveis exibem o valor 1. Isso gera a errônea impressão de que não existe diferença entre as duas formas.

Agora considere o código abaixo. Nele a diferença é que o incremento está sendo realizado no momento do printf. Veja que a execução desse código mostra valores diferentes no primeiro printf. Para complementar, veja que o segundo printf, que somente mostra os valores das variáveis, exibe que ambas as variáveis possuem o mesmo valor.

A diferença na posição do operador de incremento pode ser pontuada da seguinte maneira:

  • quando se utiliza variavel++ é inicialmente utilizado o conteúdo da variável e depois incrementada a variável.
  • quando se utiliza ++variavel é inicialmente incrementada a variável e depois utilizado o conteúdo.

Exemplificando através do último código, quando é dado o printf de ++y, inicialmente é incrementado o valor da variável y (que passa de zero para 1) e depois mostrado o valor da variável. Com o printf de x++, inicialmente é mostrado o valor da variável (no caso, o valor zero) e depois incrementado o valor de x (que passa de zero para 1). Por isso o resultado do primeiro printf mostra valores diferentes para x e y, embora o segundo printf mostre que as variáveis, após o término do primeiro printf, possuem o mesmo valor.

Em tempo, o mesmo comportamento ocorre com o operador de decremento.

 

Share

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.