小编waj*_*waj的帖子

双乘法在32位平台的编译时和运行时之间不同

我正在32位和64位平台上编译并运行以下程序:

int main()
{
  double y = 8.34214e08;
  double z = 1.25823e45;

  return y * z == 8.34214e08 * 1.25823e45;
}
Run Code Online (Sandbox Code Playgroud)

虽然在64位中结果是预期的(值是相同的,退出代码是非零的)在32位似乎在编译时计算的值,比较的右侧和左侧之间存在一点差异在运行时计算的一面.

这是编译器中的错误还是有逻辑解释?

编辑:这与为什么比较双重和浮动导致意外结果不同?因为这里所有的价值都是双倍的.

c double 32bit-64bit

18
推荐指数
3
解决办法
887
查看次数

标签 统计

32bit-64bit ×1

c ×1

double ×1