Operadores de auto-incremento e auto-decremento

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.

Pré-incremento, pós-incremento, pré-decremento e pós-decremento em Linguagem C

Até a próxima!