Questão de fundamentos da linguagem

1 resposta
S

What will happen when you invoke the following method?

void infiniteLoop()
    {
        byte b = 1;

        while ( ++b > 0 );

        System.out.prinln("Welcome to Java");
    }

A- The loop never ends.
B- Prints "Welcome to Java".
C- Compilation error at line 5. ++ operator should not be used for byte type variables.
D- Prints nothing.

1 Resposta

F

vai chegar uma hora no loop q b vai tentar receber o valor 128 ,
e será feito um narrow… que irá compactar esse valor num bit…
que irá tornar o valor de b = -128;

esse narrow ou compactacao que eh feito … nada mais do que eliminar bits do numero e colocar no tamanho do outro tipo nesse caso o byte

128 = 0000 0000 0000 0000 0000 0000 1000 0000 (literal int)
apos narrow
atribue-se 1000 0000 para a variavel b,
soh q como o valor do ultimo digito eh negativo ele:
faz o complemento -> 0111 1111
soma + 1 -> 1000 0000
e coloca o sinal de negativo -> - 1000 0000

que resulta no valor de -128 que é menor que 0, entao ele sai do loop …
e continua o fluxo , imprimindo
"Welcome to Java"

Cara…essas questoes taum muito modernas!!!
Caraio… nunca tive que pensar tanto huauhauah … pode continuar mandando!!!

Criado 8 de março de 2005
Ultima resposta 8 de mar. de 2005
Respostas 1
Participantes 2