Какова реальная разница между циклами for и while?

В чем разница между for петля и while цикл?

Я не спрашиваю о синтаксисе или о том, как работает или работает каждый цикл, в то время как это цикл с контролем выхода.

Что мне нужно знать, так это должна быть причина для создания цикла for и цикла while, если процесс выполняется так же, то нет необходимости в другом, Я ищу по этой причине.

И не включать do whileЯ говорю о while хотя do while является частью времени.

0

Решение

for это просто синтаксический сахар на некоторое время, если не сказать, что оба могут быть реализованы с goto заявление, а также многие другие языковые конструкции.

Историческая причина состояла в том, чтобы сделать ваш программный код более читабельным.

1

Другие решения

  1. Цикл for следует использовать, когда у вас есть какая-то переменная счетчика, которую нужно увеличивать / уменьшать при каждой итерации цикла. если вы используете цикл while в таком требовании, вы будете использовать одну дополнительную строку кода для увеличения / уменьшения счетчика.
  2. Цикл while должен использоваться, когда у вас есть какое-то условное выражение, и цикл должен продолжаться до тех пор, пока это условие не станет истинным, как только это условие станет ложным, цикл завершится.
  3. цикл while может использоваться как замена цикла for, но цикл for не может использоваться для замены цикла while
0

Специально для языка 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:
;
0
По вопросам рекламы [email protected]