Por: Eduardo Casavella
Suponha que você tenha declarado uma variável do tipo int denominada x.
Existe alguma diferença entre o comando ++x e x++ ?
Vamos examinar melhor estes dois casos neste artigo.
Sabemos que para incrementar a variável x podemos utilizar o comando x++ (pós-incremento).
Utilizar x++ equivale a fazer x = x + 1; Ou seja, soma uma unidade ao valor de x.
Acontece que também existe o comando ++x e este também equivale a fazer a operação x = x + 1;
Então, existe realmente diferença entre estes dois comandos?
Sim existe, tanto é que os dois tem nomes diferentes pós-incremento e pré-incremento.
Vejamos a diferença entre eles.
Pós-incremento
No pós incremento o operador é usado APÓS a variável.
Exemplode uso: x++;
Neste exemplo ocorre o incremento do valor APÓS a operação associada terminar. Ou seja, quando o operador ++ vem depois da variável x, sendo assim o incremento ocorre depois do processamento do comando atual.
Vejamos um exemplo neste fragmento de código em C.
int x = 100;
printf(“Valor de x %d \n”,x++); //vai exibir 100
printf(“Valor de x %d \n”,x); //vai exibir 101
Isto ocorre porque no pós-incremento a variável é incrementada depois de usada, ou seja, o primeiro comando printf imprimiu o valor e somente depois a variável incrementou, logo só é possível ver a atualização do valor na próxima linha de código, ou seja no segundo printf.
Pré-incremento
No pré incremento o operador é usado ANTES da variável
Exemplo: ++x;
Neste caso, o incremento ocorre ANTES do processamento do comando atual, ou seja, quando o operador ++ vem na frente da variável, incrementa primeiro e depois faz o resto do processamento da instrução logo, aparece o valor da variável já incrementado de imediato.
Portanto, temos que se o valor atual de x é 101 ao usar o pré-incremento, a variável é atualizada de imediato e depois é usada exibindo o valor já atualizado anteriormente.
printf(“Valor de x : %d \n”,++x); //vai exibir 102
Vamos observar melhor como se dá este processo no código abaixo.
#include<stdio.h>
int main(void)
{
int x = 100, y = 10;
printf("Valor inicial de x: %d \n",x);
/*
x++ equivale a fazer x = x + 1;
++x também equivale a fazer x = x + 1;
Então qual a diferença entre os dois comandos? */
printf("\n-------------------- Pos-incremento --------------------- \n\n");
printf("Valor de x na mesma linha do pos-incremento: %d \n",x++); //vai exibir 100
printf("Valor de x na linha seguinte ao pos-incremento: %d \n",x); //vai exibir 101
printf("\n-------------------- Pre-incremento --------------------- \n\n");
printf("Valor de x na mesma linha do pre-incremento: %d \n",++x); //vai exibir 102
printf("Valor inicial de y: %d \n",y);//nesta linha vai exibir 10
printf("\n-------------------- Pos-decremento --------------------- \n\n");
printf("Valor de y na mesma linha do pos-decremento: %d \n",y--); //vai exibir 10
printf("Valor de y na linha seguinte ao pos-decremento: %d \n",y); //vai exibir 9
printf("\n-------------------- Pre-decremento --------------------- \n\n");
printf("Valor de y na mesma linha do pre-decremento: %d \n",--y); //vai exibir 8
return 0;
}
A seguir podemos observar a tela de execução gerada pelo código em C do programa anterior.
Até a próxima!