Переведите цикл while в цикл for - PullRequest
3 голосов
/ 16 октября 2011

Имейте простой цикл while и пытайтесь перейти в цикл for

i=1
while(i<=128)
{     printf("%d",i);
   i*=2;
}

Вот мой цикл

for (i=1;i<=128;i++)
{ 
   printf("%d",i);
   i*=2;
}

Почему это не дает тот же вывод? Первый будет печатать 1248163264128, для цикла печати 137153163127?

Ответы [ 4 ]

13 голосов
/ 16 октября 2011

Цикл for удваивает i, а затем увеличивает его.Цикл while только удваивает его.

Измените цикл for на следующее:

for (i=1;i<=128;i*=2) {
    printf("%d", i);
}
8 голосов
/ 16 октября 2011

Поскольку вы также увеличиваете i в цикле for. В вашем исходном цикле i никогда не увеличивается.

Попробуйте это:

for (i=1; i<=128; i*=2)  //  Remove i++, move the i*=2 here.
{
    printf("%d",i);
}
3 голосов
/ 16 октября 2011
for (i=1;i<=128;i*=2)
{ 
  printf("%d",i);    
}
1 голос
/ 27 сентября 2012

В цикле 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);        
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...