В чем разница между for
петля и while
цикл?
Я не спрашиваю о синтаксисе или о том, как работает или работает каждый цикл, в то время как это цикл с контролем выхода.
Что мне нужно знать, так это должна быть причина для создания цикла for и цикла while, если процесс выполняется так же, то нет необходимости в другом, Я ищу по этой причине.
И не включать do while
Я говорю о while
хотя do while
является частью времени.
for
это просто синтаксический сахар на некоторое время, если не сказать, что оба могут быть реализованы с goto
заявление, а также многие другие языковые конструкции.
Историческая причина состояла в том, чтобы сделать ваш программный код более читабельным.
Специально для языка C ++:
В основном это:
int i;
for (i = 0; i < 10; i++)
{
printf("%d\n", i);
}
может быть написано как это, что строго эквивалентно, но может быть несколько менее читабельным:
int i = 0;
while (i < 10)
{
printf("%d\n", i);
i++;
}
Но переменная управления цикла может быть объявлена в for
утверждение, которое дает довольно компактный код:
for (int i = 0; i < 10; i++)
{
printf("%d\n", i);
}
Но с while
вы не можете иметь эквивалент этого, когда область действия переменной цикла ограничена самим циклом:
Это было бы что-то вроде этого, что является недопустимым C ++:
while (int i < 10)
{
printf("%d\n", i);
i++;
}
Вы могли бы написать это вместо этого:
{
int i = 0; while (i < 10)
{
printf("%d\n", i);
i++;
}
}
но, как вы можете видеть, это громоздко и не очень читабельно.
Кстати, вы могли бы написать то же самое for
такой цикл, который действительно ужасен:
int i = 0;
startfor:
if (!(i < 10)) goto endfor;
printf("%d\n", i);
i++;
goto startfor;
endfor:
;