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