[2] Comentário enviado por
Listeiro 037 em 11/06/2012 - 12:55h:
Prá mim está bem.
O mérito é que nunca vi até agora isso em livro algum.
Nem em sites, nem alguém que falasse sobre.
Eu descobri isso por puro acidente durante uma aula há uns anos.
Eu simplestente digitei o código e apertei F9 (sim!) e compilou.
Portanto trata-se de mais uma coisa puramente escolar.
Nem acadêmico seria dito.
Por falar em software comercial, será que isso aí funciona em Java ou em C#?
Em algum dos Trẽs Ps? Ou em Javascript?
Provavelmente em C++. D ninguém conhece, então não é tão comercial assim.
Aquelas tranqueiras visuais proprietárias nem pensar...
Esse exemplo é estranho mesmo porque são quatro variáveis.
Quatro loops aninhados? Se "if/else if/else" já é horroroso, imagine quatro loops aninhados?
Se tiver mais de três aninhamentos, há algo errado, típico de se usar uma subrotina.
Não precisa ser 4x1. Pode ser 2x2 também.
Eu nem diria tanto inovação, que se abusar isso deve ser do tempo do K&R.
Devem existir outros exemplos mais obscuros, que passam por completo em desapercebido porque... bem, não importa.
A intenção mesmo foi subverter o senso comum dos "únicos três campos do 'for': arroz, feijão e zoião".
Tem outras coisas, como for(;;) = while(1)
Obs [1]: Nada que fiz aqui até agora tem valor comercial.
Obs [2]: Sem menosprezar a qualquer um que seja. Simplesmente não é.
Obs [3]: Ao menos em Perl loops "while" são muito mais rápidos que for ou foreach.
Obs [4]: Em x86 bytecode não existe for/while. Depende de como o compilador se vira prá gerar o binário.
Fiz mais um experimento:
[code]#include <stdio.h>
main (){
unsigned int i, j, k, l;
for (i=0; i<16; i++)
for (j=0; j<16; j++)
for (k=0; k<16; k++)
for (l=0; l<16; l++)
printf("%d %d %d %d\n", i, j, k, l);
}[/code]
Compilei o código acima, que possui 196 caracteres contra o primeiro, de 183 caracteres.
Resultado:
[1]: Ambos geraram binários de mesmo tamanho em bytes.
[2]: Mesmo tamanho em bytes após serem estripados ("strip -s").
Foi apenas isto, mas existe uma probabilidade grande de o binário ser o mesmo. A velocidade idem.
Pessoalmente nenhum dos dois exemplos possui coisa alguma de elegante.