На мой взгляд, цикл for используется для итерации по известному или определяемому диапазону.
String[] names = //something;
for ( int i = 0; i < names.length; i++ ) { //do stuff }
что эквивалентно (определение i в стороне):
String[] names = //something;
int i = 0;
while (i < names.length )
{
// do stuff
i++;
}
Другими словами, for
цикл - это просто (очень полезный) синтаксический сахар для часто используемой while
конструкции.
Тем не менее, я вижу много for(;;)
конструкций в сети, которые функционально эквивалентныwhile(true)
Какова причина этого? Почему бесконечный цикл for предпочтительнее бесконечного цикла while?
// Я даже видел учебник по Java, который вообще не использовал циклы while! Ведущие к таким чудовищным конструкциям как:
String input = getInput();
for( ; !inputIsValid(input) ; )
{
//redo;
}
while
и for
здесь, и вопрос не изменится. while(true)
и for(;;)
иметь в виду то же самое. У вас явно есть сильное предпочтение while
, другие могут иметь такое же сильное предпочтение for
. Нельзя сказать, что одно правильнее другого.
for(;;)
запутанного. Это стандартная идиома C, которую вы документируете в разделе 3.5 K & R (2e). Я понимаю, что тебе это не нравится; Вы должны понимать, что другие, очевидно, предпочитают это (иначе вы бы никогда этого не увидели). Это может быть более или менее приемлемо на языках, отличных от C; Вы пометили этот язык-независимость, которая только снижает вероятность окончательного ответа. Опять же, я проголосовал за закрытие, потому что Q не конструктивен; если бы я обиделся, я бы пометил как оскорбительное вместо или в дополнение к закрытию. Это все.
wheeeeeeee { ... }