如果我乘以下面的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