Даже если этот ответ предполагает, что обе конструкции эквивалентны, существует небольшая разница между for(;;)
и while(1)
(которые создают бесконечные циклы) в языке C (и, возможно, в зависимости от компилятора).
Некоторые компиляторы (например, Windriver DIABData) жалуются на "условие всегда верно" при использовании while(1)
.
Изменение на for(;;)
позволяет избавиться от предупреждения, возможнопотому что последнее выражение семантически сильнее для намеренного создания бесконечного цикла, и вообще не существует условия «всегда верно» (плюс его короче писать).
С другой стороны, язык C ++ не делаетразличайте обе конструкции, как сказал Адриан в комментариях:
Стандарт C ++ гласит, что отсутствующее условие делает подразумеваемое предложение while эквивалентным while(true)
, а оператор for ( for-init-statement condition opt ; expression opt )
эквивалентен { for-init-statement while ( condition ) { statement expression ; } }