1

本当に短くてシンプル:

と言うcol = 10size = 8。次に、以下が実行されます。

col -= size--;

では、colで減算を行う前にサイズが7に減算されますか(したがって、col = 3)?またはcol=2?

ありがとう

4

4 に答える 4

4

size--の前の値が得られるsizeため、これは次と同等です。

col -= size;
-- size;
于 2012-11-05T01:43:21.970 に答える
1

その答えはcol = 8。どのように?

col -= size--;このように解釈されます:

コンパイラの頭の中:

コンパイラ:mmhmm、そうsize--ですか?大丈夫、何colですか?10?そしてsize.. 8?その操作の後に細かく設定colしてからデクリメントします。2size

もしそうなら:col -= --size;それは:

コンパイラ:mmhmm、そう--sizeですか?大丈夫、何sizeですか?87..に設定するcol10?したがって、その減算後の答えはcol = 3です。そのため、コンパイラはそのボスを考えます。

于 2012-11-05T01:48:09.017 に答える
1

size--サイズをデクリメントして元の値を返します (--sizeデクリメントして新しい値を返します)。

右の式は左の式の前に評価されるため、右の値は から減算されcolます。

と の場合col = 10size = 8の後col -= size--size7 にcol等しく、2 に等しくなります。

于 2012-11-05T01:43:09.020 に答える
1

オペランドの後に++or--がある場合は、最初に値が返され、その後にインクリメント/デクリメントされます。前に現れたら逆です。

于 2012-11-05T01:43:22.407 に答える