【发布时间】:2011-03-15 05:36:00
【问题描述】:
以下代码似乎总是产生错误的结果。我已经在 gcc 和 windows visual studio 上对其进行了测试。是因为浮动溢出还是其他原因?在此先感谢:)
#include <stdio.h>
#define N 51200000
int main()
{
float f = 0.0f;
for(int i = 0; i < N; i++)
f += 1.0f;
fprintf(stdout, "%f\n", f);
return 0;
}
【问题讨论】:
-
请澄清您所说的“错误结果”是什么意思:您的预期结果是什么?您的实际结果是什么?
-
@AakashM:预期结果为 51200000;实际结果会少很多。我还没有运行代码,但我猜实际结果类似于 16777216。
-
正如 Mike 所说,预期结果是 51200000,实际结果是 16777216。抱歉,不清楚。
-
学到了很多,非常感谢大家!