Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Explicação sobre como esse código o resultado dá 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
    }
}
1 resposta
solução!

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!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software