本当に短くてシンプル:
と言うcol = 10
、size = 8
。次に、以下が実行されます。
col -= size--;
では、colで減算を行う前にサイズが7に減算されますか(したがって、col = 3)?またはcol=2?
ありがとう
size--
の前の値が得られるsize
ため、これは次と同等です。
col -= size;
-- size;
その答えはcol = 8
。どのように?
col -= size--;
このように解釈されます:
コンパイラの頭の中:
コンパイラ:mmhmm、そうsize--
ですか?大丈夫、何col
ですか?10
?そしてsize
.. 8
?その操作の後に細かく設定col
してからデクリメントします。2
size
もしそうなら:col -= --size;
それは:
コンパイラ:mmhmm、そう--size
ですか?大丈夫、何size
ですか?8
?7
..に設定するcol
と10
?したがって、その減算後の答えはcol = 3
です。そのため、コンパイラはそのボスを考えます。
size--
サイズをデクリメントして元の値を返します (--size
デクリメントして新しい値を返します)。
右の式は左の式の前に評価されるため、右の値は から減算されcol
ます。
と の場合col = 10
、size = 8
の後col -= size--
はsize
7 にcol
等しく、2 に等しくなります。
オペランドの後に++
or--
がある場合は、最初に値が返され、その後にインクリメント/デクリメントされます。前に現れたら逆です。