我今天参加了 C 考试,有人问我一个类似的问题:
这个程序有什么问题:
for( x = .1 ; x != 1.0 ; x += .1) printf("%f\n", x);
我无法解决它,因为我必须写一些我标记.1
为错误的东西。但是,当我回到家时,我运行了这个程序,结果它在x
等于时并没有中断1.0
并陷入无限循环:
$ cat exam.c
#include <stdio.h>
int main(int argc, char **argv)
{
float x;
for(x = .1 ; x != 1.0 ; x += .1)
printf("%f\n", x);
return 0;
}
$ gcc exam.c -o exam
$ ./exam
0.100000
0.200000
0.300000
0.400000
0.500000
0.600000
0.700000
0.800000
0.900000
1.000000 <- ?
1.100000
1.200000
1.300000
1.400000
1.500000
....
有人可以解释为什么会这样。