1

ここで、はっきりと説明できない質問があります。


間違っているオプションとその理由は?

(A) a += (a++);   
(B) a += (++a);
(C) (a++) += a;
(D) (++a) += (a++);

Aとはどう違いBますか?

私の理解: Aは UB ですが、割り当ての前にB副作用が完了するため、問題ありません。++aそうですか?

++a更新:とa++シーケンス ポイント内の違いは何ですか? pre-increment(decrement) の副作用は、post-increment(decrement) と同じように、次のシーケンス ポイントの前にいつでも完了できますか?

4

2 に答える 2

6

間違っているオプションとその理由は?

最初の 2 つは未定義の動作を引き起こし、最後の 2 つはコンパイルされないためです。(もしそうなら、彼らは UB も呼び出すでしょう。)

于 2013-08-22T14:12:01.657 に答える