只有在sequence point之间的读写顺序确定的时候才能消除side effect.
比如
a[i++] = i,这实际上是错误的。不能保证结果
但是
i = i+1就可以,因为若需要计算i+1,则必须读出i.
同理
(++a) + (++a) + (++a)
这样的写法也是错误的,不能保证结果,因为运算符的顺序不能保证sequence point.
只有在sequence point之间的读写顺序确定的时候才能消除side effect.
比如
a[i++] = i,这实际上是错误的。不能保证结果
但是
i = i+1就可以,因为若需要计算i+1,则必须读出i.
同理
(++a) + (++a) + (++a)
这样的写法也是错误的,不能保证结果,因为运算符的顺序不能保证sequence point.