今日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
....
誰かがこれが起こっている理由を説明してもらえますか?