Membro desde: 29/03/2006 16:09:17
Mensagens: 92
Offline
Estava olhando o guia de certificação do Rafael Pereira e tem uma pergunta com o seguinte for
Esse tipo de for apesar de ser esquisito ele é compilado e gera um loop infinito.
Mas se eu coloca-lo antes de um system.out.println ele não compila
e se eu colocar depois compila normalmente.
Membro desde: 17/07/2006 21:38:06
Mensagens: 13
Offline
Imagino que seja porque o compilador reconhece que há um comando após um laço infinito e não permite que isso aconteça já que esse comando nunca vai ser executado, no caso do println() estar depois do for.
O compilador não deu um detalhe específico depois da tentativa de compilação não?
Membro desde: 12/12/2003 22:13:49
Mensagens: 964
Localização: Maceio-AL
Offline
Dá "unreachable code".
Ele não é tão burrinho assim, o compilador checa se a expressão de checagem não foi passada ou se foi passado true. Nestes casos ele procura se tem algum "break" dentro de for, se não tiver é por que nunca vai sair dali e o trecho abaixo é inalcançável, daí o erro.
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
Esse for (que o sr. Gosling copiou da linguagem C) é o tipo de coisa que dá um "nó na cabeça" de quem vem de qualquer outra linguagem, já que é equivalente a: