如果foo是float类型,则以下表达式是有效/推荐的吗?
(0.0f == foo * float(0))
无论foo的值如何,它都具有预期的(数学)值吗?
C标准是定义行为还是特定于实现?
解决方法
好吧,首先它不是C标准的问题.相反,问题在于您的浮点模型标准(最可能是IEEE).
对于IEEE浮点数,这可能是安全的,因为float(0)应该导致与0.0f相同的数字,并且乘以任何其他数字也应该是0.0f.
不安全的是做其他浮点运算(例如:用非整数加法和减法)并用0.0f检查它们.