x64 平台上的 GCC 是否默认启用扩展精度?

Is extended precision on by default in GCC on x64 platform?

当我使用 GCC 并使用 double 值进行计算时会发生什么。

GCC 在(我在这里假设的 x64 平台)上使用 https://gcc.gnu.org/onlinedocs/gcc-4.7.4/gcc/i386-and-x86-64-Options.html#i386-and-x86-64-Options

-mfpmath=sse (default)  (use sse instructions)
-mpc80       (default)  (rounding mode to 80bit extended precision)

我很困惑,当我在一个简单的 C++ 程序中使用 64 位 double 值时。 现在的计算是以扩展精度执行的(因为 mpc80 默认打开)还是使用 sse 指令(没有扩展精度的东西)

到底发生了什么?我需要在 64 位平台上做什么,以确保在 某些 部分代码中仅使用 "double precision",因此假设默认情况下 GCC 进行 80 位扩展精度计算,那么我需要在这部分代码中手动将 FPU 单元设置为 "double precision"?

没有。在 64 位模式下,使用 SSE 指令。 -mpc80(和其他类似选项)仅针对 32 位系统。 (据我所知)

如果您想确定,请执行运行时精度检查。

一般来说,您不应该依赖任何精度,尽管您通常可以假设 double 实际上是双精度。