【发布时间】:2015-02-05 08:18:36
【问题描述】:
我无法解释以下程序的行为(在 mingw 32 位上使用 gcc 编译)。我知道从 double 隐式转换为 int 时可能会丢失精度,但我希望这两种情况会给出相同的输出,因为它执行完全相同的操作。为什么两个输出不同?
#include <stdio.h>
#include <math.h>
int main()
{
int table[3] = {2, 3, 4};
int i, N;
N = 0;
N += table[0] * pow(100, 0);
N += table[1] * pow(100, 1);
N += table[2] * pow(100, 2);
printf("%d\n", N);
N = 0;
for(i = 0; i < 3; i++)
N += table[i] * pow(100, i);
printf("%d\n", N);
return 0;
}
//output:
40302
40300
【问题讨论】: