Nan*_*iao 5 c++ floating-point floating-accuracy language-lawyer constexpr
在constexpr:Introduction中,发言者提到"编译时浮点计算可能与运行时计算的结果不同":

原因与"交叉编译"有关.
老实说,我无法清楚地理解这个想法.恕我直言,不同的平台也可能有不同的整数实现.
为什么它只影响浮点数?或者我想念什么?
\n\n\n为什么它只影响浮点数?
\n
因为该标准没有对浮点运算精度施加限制。
\n\n根据expr.const,强调我的:
\n\n\n\n[\xe2\x80\x89注意:由于本文档对\n浮点运算的精度没有限制,因此未指定\n翻译期间浮点表达式的计算是否会产生与\n相同的结果\n程序执行期间相同的表达式(或对相同值的相同操作)。[\xe2\x80\x89示例:
\n\nRun Code Online (Sandbox Code Playgroud)\n\nbool f() {\n char array[1 + int(1 + 0.2 - 0.1 - 0.1)]; // Must be evaluated during translation\n int size = 1 + int(1 + 0.2 - 0.1 - 0.1); // May be evaluated at runtime\n return sizeof(array) == size;\n}\n未指定
\nf()will的值为true或false。\n \xe2\x80\x94\xe2\x80\x89end example\xe2\x80\x89]
\n \xe2\x80\x94\xe2\x80\x89end note\xe2 \x80\x89]
| 归档时间: |
|
| 查看次数: |
440 次 |
| 最近记录: |