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.
#include <stdio.h>
int main()
{
int x=0, y=0;
x++;
++y;
printf("x: %i \n y: %i", x, y);
return 0;
}
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.
#include <stdio.h>
int main()
{
int x=0, y=0;
printf("x: %i \n y: %i", x++, ++y);
printf("\n\n x: %i \n y: %i", x, y);
return 0;
}
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.
to estudando prog1 nas férias, quero passar nesse semestre, revendo todo o conteúdo e as partes que não conseguir acompanhar, tenho usado o chat gpt para corrigir os programas digitados, as vezes falta uma virgula, ou ponto e virgula ou uma chave, ou outros erros.