<分区>
这里有个问题我解释不清楚。
哪个选项是错误的,为什么?
(A) a += (a++);
(B) a += (++a);
(C) (a++) += a;
(D) (++a) += (a++);
A
和 B
有什么区别?
我的理解:
A
是一个 UB 但 B
可以,因为 ++a
的副作用将在赋值之前完成。是吗?
更新:序列点内++a
和a++
有什么区别? pre-increment(decrement) 的副作用可能在下一个 seq-point 之前的任何时间完成,就像 post-increment(decrement) 一样?