Semântica do operador “++” pré e pós-fixo em Java

Eu queria saber por que esse trecho de código dá saída 112
Como este último dígito 2 estava criando?

 public static void main(String[] args) { int i = 0; System.out.print(++i); System.out.print(i++); System.out.print(i); 

Por que isso acontece?

Seu snippet é traduzido como

 int i = 0; i = i + 1; // 1 System.out.print(i); // 1 System.out.print(i); // 1 i = i + 1; // 2 System.out.print(i); // 2 

É por isso que o resultado final é um 2.

++i está incrementando a variável antes de ser chamado pelo método print e i++ está incrementando a variável após a execução do método.

i++ é o operador de pós-incremento, que tem o valor de expressão do valor antigo de i , mas um efeito colateral de incrementar i . O valor é 1 , mas deixa i mudei para 2 .

Quando usamos o operador post ou pre increment, aumenta o valor.

O operador pós-incremento ( i++ ) atribui o valor primeiro e, em seguida, incrementa-o. O operador de pré-incremento ( ++i ) é incrementado primeiro e depois atribui o valor. Ambos se comportam assim:

 int i=0; i=i++; System.out.println(i); //1 i=++i; System.ou.println(i); //1 

Quando este código é executado:

 public static void main(String[] args) { int i = 0; //i=0; System.out.print(++i); // increments i to i=1, and prints i System.out.print(i++); // prints i and then increments it to i=2 System.out.print(i); // prints i, ie 2 } 

i é inicialmente 0, então é pré-incrementado e impresso para que você tenha o primeiro 1, então ele é impresso novamente e você tem o segundo 1, então pós-incrementado, depois impresso pela última vez e você tem o 2

Simplesmente;

No incremento pós, o incremento é feito depois que a variável é lida.

No pré-incremento, o valor da variável é incrementado primeiro, depois usado na expressão.

Você está aplicando dois incrementos em i . O valor inicial foi 0, portanto, após dois incrementos ( ++i e i++ ), ele se tornará 2.

Tanto o i++ quanto o ++i estão incrementando o valor de i por um.

Eles são semelhantes aos

 i = i+1; 

mas o ++i incrementa o valor de i e usa-o, então 0 se torna 1 e imprime, enquanto o i++ primeiro usa o valor e então incrementa o valor de i , então o valor impresso é 1 e então ele se torna 2 o último dígito (o valor final de i ) é 2.