そのような呼び出しが私の値を増加させない理由を誰かが説明できi
ますか?
int i = 0;
list.get(7 + (i = i++));
list.get(7 + (i = i++));
i=0
2番目の呼び出しで1になるように、少なくとも1ずつインクリメントする代わりに残します。
i = i++
するようなものです:
int old_i = i;
i = i + 1;
i = old_i;
実際に起こっていることは、インクリメントが発生する前i++
のの値が の値であり、その後、.. の値が取得されるということです。i
i
i
1 行で の古い値をi++
使用し、それをインクリメントします。i
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 番目に代入します