有人可以解釋這種行爲嗎?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