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);
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);
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 :).