除非完全禁用编译器优化(),否则 VS2010 编译器似乎正在计算双精度表达式/Od
。
static const float a = 1.0f;
if (b < (float)(1.0f + a))...
在这里,1.0f + a
首先使用双精度计算,然后如果优化级别不是 ,则转换为单精度/Od
。不幸的是,当将编译器浮点模型设置为 时strict
,我们不能将预编译器#defines
与计算表达式一起使用,因此这不是一个选项。
如何以适当的方式处理它并强制编译器以单精度计算上述语句?