Сегодня у меня был экзамен на 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
....
Может кто-нибудь объяснить, почему это происходит.