2011-02-15 50 views

回答

1

我一無所知d的語言,但我會高興地回答這個問題在您的標題:

是乘法交換總是在不精確浮點運算?

直到NaN值的「有效載荷」,是的。 IEEE-754浮點乘法是可交換的(所以是加法)。如果您不知道NaN的有效載荷是什麼,請不要擔心。

5

我想區別只是在功能原型 - 一個是(double, double[])和另一個是(double[], double)。但結果應該是一樣的。

+0

但是dong array1 [] + = scalar * array2 [];由編譯器重寫爲函數調用。這些數組操作有特殊的語法。您不要直接使用函數調用語法來調用函數。爲什麼編譯器不會只有一個函數,並以與array1 [] + = array2 [] *標量相同的方式重寫? – dsimcha 2011-02-15 22:44:36

+0

編譯器如何知道是否要調用`array :: operator *(標量)`或`int :: operator *(array)`?換句話說,你需要區分`array1 [] + =標量/數組2 []`和`數組1 [] + =數組2 [] /標量`。所以操作符重載規則必須要求定義這兩個變體。在`*`和`+`的情況下,結果是一樣的,但調用約定仍然不同。當然,`-`和`/`的結果也不一樣。 – mtrw 2011-02-16 02:22:28