Operadores

7 respostas
T

Aê pessoal ....mais uma

public class Shift{
    static int i;
    static int j;
    public static void main(String argv[]){
	i = 2;
	j = i <<31;
	i =i++;
	System.out.println(j);
	System.out.println(i);

    }
}

O q ele imprime?

7 Respostas

L

Creio que seria j=33 e i=2

P

Olá Taz,

i << 31 equivale a i * 2³¹

então a saída será:

j=2*2³¹=2³²
i=3

está certo?

falow;

R

Acho que é:

j = 0 e i = 3;

Um int tem 32 bits. Quando o único bit significativo do i = 2 for deslocado 31x para a esquerda irá sair do container gerando zero como resultado. Ok?

Robson

T

Robson,

j é 0 e i (pasme!!!) é 2… faça o teste!!!

Quando vi da primeira vez pensei como vc… mas é como se ele não fizesse o incremento, portanto, é preferível usar

Abraço.

L

Eu só não consegui entender porque o j=0 eu fiz o teste e deu j=0. Alguém sabe me responder porque?

T

luidymorais,

vc empurra o 1 até ele despencar pelo lado esquerdo… por isso q o resultado é 0!! Detalhe: se fosse j = i &lt;&lt;30; ele não despencaria … hehehe

F

o i = 2 pq ele primeiro retorna o valor, depois incrementa e depois atribui, assim a atribuicao anula a incrementacao…

Criado 11 de janeiro de 2005
Ultima resposta 11 de jan. de 2005
Respostas 7
Participantes 5