在书上看到这样的一个程序:
#include<stdio.h>
int main()
{
double i;
for(i=0;i!=10;i+=0.1){
printf("%1.lf\n",i);
}
return 0;
}
第一反应是一个简单的for循环,i每次增加0.1如何输出,一直到i=10,循环结束。
运行之后:
程序进入死循环,说明
for(i=0;i!=10;i+=0.1)
中i!=10终止条件没有起作用,在for循环中加入两条语句观察i的值:
for(i=0;i!=10;i+=0.1){
printf("%.1lf\n",i);
printf("%lf",i);
break;
}
运行结果:
for循环只运行一次,可见虽然输出的i值保留小数点后一位,但是i不等于0.1,这也是i!=10终止条件没有起作用的原因。修改为
for(i=0;i!=10.000000;i+=0.1){
printf("%.1lf\n",i);
}
运行结果依然是死循环,没有想明白为什么。赢注意避开用这种浮点数的for循环。