最近看书看到一个简单的题,
问,下面程序运行结果是什么?
#include <stdio.h>
int main(int argc, char *argv[]) {
double i;
for (i = 0; i != 10; i += 0.1) {
printf("%.1f\n", i);
}
return 0;
}
主观以为是输出0~10之间一位小数点的小数
但不是,这是个陷阱,其实是无限循环
搜索网友解释 http://blog.sina.com.cn/s/blog_6da76f9b0100yr8d.html
接下来调用gdb输出中间结果来观察,发现 i 自加0.1后,并不是我们预想的等于0.1,而是等于 0.10000000000000001. 再往下执行几次, i 的值分别是0.20000000000000001, 0.30000000000000004, 0.40000000000000002
等我研究gdb后再来试试