Duvida em questão simulado

7 respostas
luistiagos
static public void main(String...arg)
    {
        int i=1;
        int result = 5+i++%4*i;     
        System.out.println(result);
    }

alguem pode me explicar o pq isto retorna 7?

7 Respostas

victorwss

luistiagos:
static public void main(String...arg) { int i=1; int result = 5+i++%4*i; System.out.println(result); }

alguem pode me explicar o pq isto retorna 7?

i % 4 = 1
i++
1 * 2 = 2
5 + 2 = 7

Ou seja:

temp = i % 4;

i++;

result = 5 + (temp * i)
somma

Bom, pelo o que eu pude entender ele calcula primeiro a expressão do mod i++%4 retornando o valor de 2

em seguida ele soma +5 e multiplica por 1

Ok!

Deluxe

cara nao cai questões assim na prova… isso é bom pra entender como funciona os operadores aritimético… mas a não cai na prova questões em cima de operadores assim… tipo somando aqui, dividindo ali, mutiplicando ali pra saber o resultado final…

victorwss

Na verdade caia na SCJP 1.4. Na SCJP 5 tiraram os objetivos relativos a estas questões para dar espaço para outros objetivos.

FilhoDoRei

E Porque assim:

public static void main(String ... args){
        int i=1;   
        int result = 5+(++i%4)*i;       
        System.out.println(result); 
}

Dá 9 como resultado?

victorwss

FilhoDoRei:
E Porque assim:

public static void main(String ... args){
        int i=1;   
        int result = 5+(++i%4)*i;       
        System.out.println(result); 
}

Dá 9 como resultado?

Porque ++i e i++ são coisas diferentes.

Aí ele vai fazer:
++i // i = 2
i%4 // 2
2*i // 4
5+4 // 9

FilhoDoRei

Valeu!

Criado 14 de maio de 2008
Ultima resposta 14 de mai. de 2008
Respostas 7
Participantes 5