有一个简单的while循环,并试图使其向一个for循环翻译while循环成环
i=1
while(i<=128)
{ printf("%d",i);
i*=2;
}
这里是我的循环
for (i=1;i<=128;i++)
{
printf("%d",i);
i*=2;
}
为什么它不给相同的输出?第一个会打印1248163264128
,for循环打印137153163127
?
有一个简单的while循环,并试图使其向一个for循环翻译while循环成环
i=1
while(i<=128)
{ printf("%d",i);
i*=2;
}
这里是我的循环
for (i=1;i<=128;i++)
{
printf("%d",i);
i*=2;
}
为什么它不给相同的输出?第一个会打印1248163264128
,for循环打印137153163127
?
因为你也在for循环中增加了i
。在原来的while循环中,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循环只能增加一个循环变量,而OP似乎已经有了。 –
@ChristianRau看起来你从我以前的日子里偶然发现了一篇文章。固定。 – Mysticial
的for
环双打i
,然后增加它。 while
循环只能使其翻倍。
更改for
循环到这一点:
for (i=1;i<=128;i*=2) {
printf("%d", i);
}
for (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);
}
增量'I * = 2'在'为(I = 1; I <= 128; I * = 2)' – cpx
条件在for循环是错误..配售我* = 2代替我的++解决你的问题.. –