2013-04-16 11 views
2

В последнее время, идя через с ++ учебник я столкнулся для цикла, который выглядит следующим образом:for (;;) - это бесконечный цикл?

for (;;){ 
    //Do stuff 
} 

Это бесконечный цикл? Почему я должен использовать это скорее, чем while(1)?

+3

Да. Используйте тот, который вам больше нравится. – jrok

+0

Да. Нет причин использовать его вместо 'while (1)' или 'while (true)': вопрос предпочтения. Но на мой вкус: 'for (;;)' некрасиво. –

+4

'for (;;)' явно лучше. – john

ответ

8

Да, это бесконечно. Традиционно компиляторы генерируют предупреждение, когда вы используете while(1), но не при использовании for(;;). Я не знаю, все ли так.

+0

MSVC все еще делает на достаточно высоких уровнях предупреждения –

3

Это бесконечный цикл?

Да.

Почему я должен использовать это скорее, чем while(1)?

Из-за (плохой, ИМО) вкус. Кстати, я бы пошел за while (true), если мне действительно нужно было создать бесконечный цикл.

+0

Настоящие программисты используют 'goto' для этих типов циклов и другую' goto' (или 'return') для их выхода. :) –

+2

@LeeMeador: Настоящие программисты не используют 'goto';) –

+3

+1 для мудрости. -1 за недостающее чувство юмора. –

5

Это бесконечный цикл. Точнее, если условие в for пусто, считается true. Что касается while (true) против for (;;): исторически for (;;) был идиоматической формой (используется Керниганом и Ричи), возможно, частично потому, что ранний C не имел логических значений. Использование while (1) не прошло бы обзора кода, где бы я ни работал. С booleans, while (true) определенно кажется более интуитивно понятным, чем for (;;), но while (1) сбивает с толку. Но в добулевые времена у всех были #define для true или TRUE или некоторые такие, поэтому это слабый аргумент. В конце концов, если вы старый программист C, как я, кто изначально учился у Кернигана и Ричи, вы просто инстинктивно используете for (;;). В противном случае ... это, вероятно, зависит от того, откуда и от кого вы выучили C++.

Конечно, когда вы на работе, вы следуете соглашениям о доме, чем бы они ни были.

Смежные вопросы