有一个简单的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
?
有一个简单的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
?
for
循环先将i
加倍,然后再将其递增。而while
循环只是将其加倍。
将for
循环修改为以下代码:
for (i=1;i<=128;i*=2) {
printf("%d", i);
}
for (i=1; i<=128; i*=2) // Remove i++, move the i*=2 here.
{
printf("%d",i);
}
for(i=1; i<=128; i*=2)
!更糟糕的是,这个答案加强了一个错误的想法,即 for 循环只能递增循环变量,而这似乎已经是提问者所知道的。 - Christian Raufor (i=1;i<=128;i*=2)
{
printf("%d",i);
}
while
循环中,您没有增加 i
的值,但是在您的 for
循环中却使用了它。for (i=1;i<=128;i++)
{
printf("%d",i);
i*=2;
}
在循环的每次迭代中,您正在将i
增加1并将i
乘以2。这就是您得到奇怪结果的原因。
尝试使用以下代码以获得与while循环生成相同的结果。
for (i = 1; i <= 128; i *= 2)
{
printf("%d",i);
}
for (i=1;i<=128;i*=2)
中将i*=2
递增 - cpx