如果我乘以下面的float和and整数,为什么所有的乘法都会导致不同的结果?我的期望是一致的结果。我认为在这两种情况下,int值都会在乘法之前隐式转换为浮点数。但似乎有区别。这种不同处理的原因是什么?为什么int/float乘法会导致不同的结果?
int multiply(float val, int multiplier)
{
return val * multiplier;
}
int multiply2(float val, int multiplier)
{
return float(val * multiplier);
}
float val = 1.3f;
int result0 = val * int(10); // 12
int result1 = 1.3f * int(10); // 13
int result3 = multiply(1.3f, 10); //12
int result4 = multiply2(1.3f, 10); // 13
谢谢 托尔斯滕
这是真正的代码?我得到了相同的结果,我不明白为什么它会有所不同。 –
第二个表达式可以在编译时评估 - 你使用的编译器是什么?看看它产生的字节码。 – Floris
在Ubuntu上使用g ++ 4.7.3试验:两个乘法都导致13 – gturri