可能重复:
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