6

そのような呼び出しが私の値を増加させない理由を誰かが説明できiますか?

int i = 0;
list.get(7 + (i = i++));
list.get(7 + (i = i++));

i=02番目の呼び出しで1になるように、少なくとも1ずつインクリメントする代わりに残します。

4

3 に答える 3

7

i = i++するようなものです:

int old_i = i; 
i = i + 1;
i = old_i; 

実際に起こっていることは、インクリメントが発生する前i++のの値が の値であり、その後、.. の値が取得されるということです。i ii

1 行で の古い値i++使用し、それをインクリメントします。i

于 2013-07-24T15:06:01.573 に答える
4

i = i++最初に代入し、2 番目にインクリメントします

実行は基本的に次のようになります。

list.get(7 + (i = i)); //list.get(7);
i = i + 1; //i = 1
list.get(7 + (i = i); //list.get(8);
i = i + 1; //i = 2

++i最初に変数をインクリメントし、2 番目に代入します

于 2013-07-24T15:04:42.070 に答える