Nos meus tempos de C / C ++, codificar um "loop infinito" como
while (true)
parecia mais natural e parecia mais óbvio para mim do que
for (;;)
Um encontro com o PC-lint no final dos anos 1980 e as discussões subsequentes sobre as melhores práticas me quebraram desse hábito. Desde então, codifiquei os loops usando a for
instrução de controle. Hoje, pela primeira vez em muito tempo, e talvez minha primeira necessidade de um loop infinito como desenvolvedor C #, estou enfrentando a mesma situação. Um deles está correto e o outro não?
while(true)
requer uma condição. for(;;)
é, portanto, uma representação melhor para loops infinitos que se repetem incondicionalmente. 2. Compiladores antigos não otimizados podem realmente ter avaliado o (true)
enquanto ele fazia um loop. 3. C é uma linguagem minimalista da época dos teletipos, terminais de 300 baud e nomes de variáveis de 1 caractere. Em um ambiente onde cada toque de tecla conta, for(;;)
é um pouco mais curto do que while(true)
.