#c #for-loop #while-loop
#c #for-цикл #цикл while
Вопрос:
Создайте простой цикл while и попытайтесь превратить его в цикл for
i=1
while(i<=128)
{ printf("%d",i);
i*=2;
}
Вот мой цикл for
for (i=1;i<=128;i )
{
printf("%d",i);
i*=2;
}
Почему он не дает тот же результат? Первый будет печатать 1248163264128
, печать цикла for 137153163127
?
Комментарии:
1. Увеличить
i*=2
for (i=1;i<=128;i*=2)
2. условие в цикле for неверно.. Размещение i*= 2 вместо i решает вашу проблему..
Ответ №1:
for
Цикл удваивается i
, а затем увеличивает его. while
Цикл только удваивает его.
Измените for
цикл на этот:
for (i=1;i<=128;i*=2) {
printf("%d", i);
}
Ответ №2:
Потому что вы также увеличиваете i
в цикле for. В вашем исходном цикле while i
никогда не увеличивается.
Попробуйте это:
for (i=1; i<=128; i*=2) // Remove i , move the i*=2 here.
{
printf("%d",i);
}
Комментарии:
1. Нет, обязательно попробуйте это
for(i=1; i<=128; i*=2)
! Что еще хуже, этот ответ подтверждает идею о том, что цикл for может увеличивать только переменную цикла, которая, похоже, уже есть у OP.2. @ChristianRau Похоже, вы наткнулись на сообщение из моих предыдущих дней. Исправлено.
Ответ №3:
for (i=1;i<=128;i*=2)
{
printf("%d",i);
}
Ответ №4:
В while
цикле, который вы не увеличивали i
, но в вашем for
цикле вы используете
for (i=1;i<=128;i )
{
printf("%d",i);
i*=2;
}
Вы увеличиваете i
на единицу и умножаете i
на 2 на каждой итерации вашего цикла. Именно по этой причине вы получаете странный результат.
Попробуйте следующий код для получения того же результата, что и при генерации цикла.
for (i = 1; i <= 128; i *= 2)
{
printf("%d",i);
}