Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Aula 5

Porque o resultado da variável i é 1, e porque o resultado da variável j é 2?

int j = 0; int i = (j++ * j + j++); System.out.println(i); System.out.println(j);

2 respostas
solução!

Oi Weiller,

O j o tempo inteiro está com o incremento pós-fixado, então o compilador garante que o valor usado nas operações sempre vai ser o anterior ao incremento. Por exemplo no primeiro uso, onde j era igual a zero e foi multiplicado pelo mesmo j. Como o incremento é pós-fixado, isso ficaria da seguinte forma: 0 * 1, que é igual a zero. No segundo uso do j, perceba que o valor já é o equivalente ao incremento. Então a operação entre () no fim vai ficar assim: (0 * 1 + 1) que é igual a 1. O j envolvido na soma ainda está usando, de novo, o incremento pós-fixado, então é utilizado o valor anterior que é 1.

Na hora da impressão do j, como ele foi incrementado duas vezes anteriormente, o valor exibido é igual a 2. O i é igual a 1 por conta da operação em si.

Muito boa explicação, muito obrigado Alberto. Duvida tirada :).