可能重複:
Could anyone explain these undefined behaviors (i = i++ + ++i , i = i++, etc…)
increment values in printf在C/C++爲x [I] *值Y [i ++]總是等於x [I] * Y [I]
我有兩個雙數組x
和y
和整數i
。我的問題是,是否聲明:
double res = x[i] * y[i++];
總是等於聲明:
double res = x[i] * y[i];
i++;
有沒有可能是某些編譯器會改變x[i] * y[i++]
爲y[i++] * x[i]
,這顯然會產生不同的結果?
爲什麼這很重要?如果你想要一個特定的訂單,只需按照這個順序寫。 –
@BoPersson。我想解釋爲什麼我需要它,但不想破壞這個問題。不久,我需要加速'double vectors_dot_product(double * x,double * y,int n);'函數,並發現'x [i] * y [i ++] + x [i] * y [i ++] +。 ..;'比'x [i] * y [i] + x [i + 1] * y [i + 1] + ...快;' – Serg