Обе конструкции эквивалентны поведению.
Что касается предпочтения:
Язык программирования C, Kernighan & Ричи,
использует форму
for (;;)
для бесконечного цикла.
Практика программирования, Кернигана & Пайк,
также предпочитает
for (;;)
«Для бесконечного цикла мы предпочитаем для (;;), но в то время как (1) также популярны. Не используйте ничего, кроме этих форм ».
PC-Lint
также предпочитает
for (;;)
:
716 в то время как (1) ... - Конструкция формы в то время как (1) .. . был найден. Принимая во внимание, что это представляет собой константу в контексте, ожидающем логического, это может отражать политику программирования , в которой бесконечные петли префиксны этой конструкцией. Следовательно, ему присваивается отдельный номер и помещается в информационную категорию. Более обычная форма префикса бесконечной петли для (;;)
Один из обоснования (может быть, не самое главное, я не знаю), что исторически for (;;)
предпочтение было отдано while (1)
, что некоторые старые компиляторы бы сгенерировать тест для конструкции while (1)
.
Другие причины: for(;;)
является кратчайшим форма (в количестве символов), а также for(;;)
не содержит магическое число (как было отмечено @KerrekSB в комментариях OP вопрос).
Где вы это читали? – PinnyM
Я не думаю, что есть важные причины. Лично я считаю, что первое требует меньше магических констант, которые мне нравятся. –
@PinnyM В книге программирования C. – haccks