В последнее время, идя через с ++ учебник я столкнулся для цикла, который выглядит следующим образом:for (;;) - это бесконечный цикл?
for (;;){
//Do stuff
}
Это бесконечный цикл? Почему я должен использовать это скорее, чем while(1)
?
В последнее время, идя через с ++ учебник я столкнулся для цикла, который выглядит следующим образом:for (;;) - это бесконечный цикл?
for (;;){
//Do stuff
}
Это бесконечный цикл? Почему я должен использовать это скорее, чем while(1)
?
Да, это бесконечно. Традиционно компиляторы генерируют предупреждение, когда вы используете while(1)
, но не при использовании for(;;)
. Я не знаю, все ли так.
MSVC все еще делает на достаточно высоких уровнях предупреждения –
Это бесконечный цикл?
Да.
Почему я должен использовать это скорее, чем
while(1)
?
Из-за (плохой, ИМО) вкус. Кстати, я бы пошел за while (true)
, если мне действительно нужно было создать бесконечный цикл.
Настоящие программисты используют 'goto' для этих типов циклов и другую' goto' (или 'return') для их выхода. :) –
@LeeMeador: Настоящие программисты не используют 'goto';) –
+1 для мудрости. -1 за недостающее чувство юмора. –
Это бесконечный цикл. Точнее, если условие в for
пусто, считается true
. Что касается while (true)
против for (;;)
: исторически for (;;)
был идиоматической формой (используется Керниганом и Ричи), возможно, частично потому, что ранний C не имел логических значений. Использование while (1)
не прошло бы обзора кода, где бы я ни работал. С booleans, while (true)
определенно кажется более интуитивно понятным, чем for (;;)
, но while (1)
сбивает с толку. Но в добулевые времена у всех были #define
для true
или TRUE
или некоторые такие, поэтому это слабый аргумент. В конце концов, если вы старый программист C, как я, кто изначально учился у Кернигана и Ричи, вы просто инстинктивно используете for (;;)
. В противном случае ... это, вероятно, зависит от того, откуда и от кого вы выучили C++.
Конечно, когда вы на работе, вы следуете соглашениям о доме, чем бы они ни были.
Да. Используйте тот, который вам больше нравится. – jrok
Да. Нет причин использовать его вместо 'while (1)' или 'while (true)': вопрос предпочтения. Но на мой вкус: 'for (;;)' некрасиво. –
'for (;;)' явно лучше. – john