这是一个我无法解释清楚的问题。
哪个选项是错误的,为什么?
(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) 一样?