有人可以解释这种行为吗?GCC编译时分错误
test.c的:
#include <stdio.h>
int main(void)
{
printf("%d, %d\n", (int) (300.6000/0.05000), (int) (300.65000/0.05000));
printf("%f, %f\n", (300.6000/0.05000), (300.65000/0.05000));
return 0;
}
$ gcc test.c
$ ./a.out
6012, 6012
6012.000000, 6013.000000
我检查了汇编代码和它把第一个printf的两个参数为6012,因此它似乎是一个编译时错误。
搜索精度/舍入 – 2010-06-03 04:35:56
如果这是精度/舍入误差,那么第二行也不会同时为6012?正如我所说,第一行的程序集中有6012个,所以编译器在编译时计算它。 – kartikmohta 2010-06-03 04:44:14
在这么简单的代码中发现编译器错误是非常非常不可能的。 – Naveen 2010-06-03 04:45:35