這是一個我無法清楚解釋的問題。關於序列點和UB
哪個選項是錯誤的,爲什麼?
(A) a += (a++);
(B) a += (++a);
(C) (a++) += a;
(D) (++a) += (a++);
是什麼A
和B
之間的區別?
我明白了: A
是UB,但B
是可以的,因爲++a
的副作用將在分配前完成。是對的嗎?
更新:在序列點內++a
和a++
之間有什麼區別?預增量(減量)的副作用可能在下一個seq點之前的任何時間完成,就像後增量(遞減)一樣?
選擇題! – devnull
@devnull是的。但我想清楚的原因。 – Donglei
看看選項'a + =(++ a);'這樣''a = a + ++ a;' – 0decimal0