2

除非完全禁用编译器优化(),否则 VS2010 编译器似乎正在计算双精度表达式/Od

static const float a = 1.0f;
if (b < (float)(1.0f + a))...

在这里,1.0f + a首先使用双精度计算,然后如果优化级别不是 ,则转换为单精度/Od。不幸的是,当将编译器浮点模型设置为 时strict,我们不能将预编译器#defines与计算表达式一起使用,因此这不是一个选项。

如何以适当的方式处理它并强制编译器以单精度计算上述语句?

4

0 回答 0