Ser*_*erg 11 c++ performance compiler-optimization
可能重复:
任何人都可以在printf中解释这些未定义的行为(i = i ++ + ++ i,i = i ++等...)
增量值
我有两个双阵列x和y和整数i.我的问题是声明是否:
double res = x[i] * y[i++];
Run Code Online (Sandbox Code Playgroud)
总是等于声明:
double res = x[i] * y[i];
i++;
Run Code Online (Sandbox Code Playgroud)
是否有可能某些编译器会x[i] * y[i++]变成y[i++] * x[i],这显然会产生不同的结果?
Jer*_*fin 13
不 - x[i] + y[i++]有未定义的行为.您正在修改值i并且也使用该值i而没有插入序列点,这会给出未定义的行为1.
不,增量发生时未定义.