我想知道如果我只是将它传递给函数而不进行任何进一步的计算,我是否可以假设浮点数的值不会改变。我想使用硬编码值为这种函数编写一些测试。

例子 :

float identity(float f) { return f; }

我可以编写以下测试吗:
TEST() {
    EXPECT(identity(1.8f) == 1.8f);
}

最佳答案

一般来说,如果知道保证会导致某些处理器体系结构的次优代码,C++ 标准不会做出保证。

传统的 x86 浮点处理使用 80 位寄存器进行计算。仅仅将一个值从这些寄存器之一移动到 64 位内存的行为就会导致舍入发生。

关于C++ 是否保证未触及的浮点值的恒定性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26514597/

10-15 17:28