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.