class MyExamCloudOCAJP8{
public static void main(String[] args){
int x = 3;
int y = ++x * 4 / x-- + --x;
System.out.println("y + x is " + (y + x)); //y + x is 8
}
}
class MyExamCloudOCAJP8{
public static void main(String[] args){
int x = 3;
int y = ++x * 4 / x-- + --x;
System.out.println("y + x is " + (y + x)); //y + x is 8
}
}
Oi Delmo,
É só você pensar o seguinte, todo pré-incremento ou decremento acontece antes da operação (++ ou -- antes da variável) e todo pós-incremento ou decremento acontece depois da operação realizada (++ ou -- depois da variável).
Vamos analisar passo-a-passo o que acontece:
int x = 3;
int y = ++x * 4 / x-- + --x;
x é inicializado com o valor de 3, depois é feito um pré-incremento de x, passando este a valer 4. Em seguida é feita uma multiplicação de x * 4 cujo resultado é 16. Este resultado é dividido pelo valor atual de x pois é feito um pós-decremento.
O resultado da operação é 4 e x é decrementado passando a valer 3. Depois disso só resta a soma que é efetuado com o valor de x decrementado, mas desta vez é um pré-decremento e x passa a valer 2 antes da subtração feita. Então temos 4 do resultado anterior somando com 2 e y recebe o valor 6.
Já no print temos:
System.out.println("y + x is " + (y + x));
Como foi colocado um parenteses separando a soma da concatenação, o valor de x e y é somado antes da concatenação ser efetuada. O resultado da soma é 8.
Por isso imprime y + x is 8.
Abraço!