Estou trabalhando em um golfe para Java e preciso de um loop infinito. Obviamente, não quero gastar mais bytes do que preciso, especialmente em uma linguagem tão expressiva.
Supondo que eu tenha algum código que eu queira executar, obviamente a linha de base está definida em while(1>0)/*stmt*/
10 caracteres adicionais para uma única linha e while(1>0){/*stmt1*//*stmt2*/}
12 caracteres adicionais para várias linhas. Digo adicional porque o código que quero repetir para sempre (bem, para sempre ... talvez eu queira ou não sair ou retornar do loop) terá um certo comprimento e, em seguida, devo usar caracteres adicionais para torná-lo realmente loop.
No começo, achei que isso seria o melhor que conseguiria, mas achei que os jogaria para os especialistas para ver se eles poderiam encontrar um melhor.
main();
?main(null)
.main(a)
semain
for declarado comopublic static void main(String[]a)
.Respostas:
Funciona porque nenhuma condição é avaliada como sempre verdadeira. Insira o código entre os chavetas.
Se você tiver apenas algumas instruções, poderá colocá-las dentro da cabeça (a parte (;;). O loop que ainda é executado é causado por, quando a instrução de condição não é um booleano, conta como sempre verdadeiro. lembrete
fonte
for(;;foo(),bar(),baz())quux();
for(;;);
Java - 60 bytes (código completo)
Provavelmente não estou interpretando a pergunta corretamente, mas esse código, quando compilado e executado, resulta em um loop infinito, pois tecnicamente ele deve ser executado para sempre, mas geralmente esgotará a memória da pilha.
No Coding Ground, ele termina rapidamente, no meu laptop Windows 7 com gerenciamento avançado de memória virtual, ele demora muito, apenas tornando o sistema cada vez mais lento.
fonte