17

Java、Kotlin、および Android は、インデックス値をインクリメントしながら、特定のインデックスで配列値を返すことをどのように処理しますか?

int[] someArray = new int[5];
int index = 0;
int result;

result = someArray[index++];

結果に渡されるインデックスはどれですか? index最初にインクリメントしてから に渡しますかsomeArray[1]、それとも の元の値を渡してindexからsomeArray[0]にインクリメントしますindexか?

4

5 に答える 5

19

参照: Java ドキュメント、代入、算術、および単項演算子:

コード結果++; そして++結果; どちらも結果が 1 ずつインクリメントされて終了します。唯一の違いは、プレフィックス バージョン (++result) はインクリメントされた値に評価されるのに対し、ポストフィックス バージョン (result++) は元の値に評価されることです。

だからあなたは得るでしょうsomeArray[0]

于 2011-08-28T00:29:11.483 に答える
5

index++戻りindex、1ずつインクリメントします。したがって、実行してから1result = someArray[0]に設定indexします。

対照的に++index、インクリメントを実行してから、インクリメントされた値を渡します。したがって、上記のコードで をresult設定したい場合は、 を使用します。someArray[1]++index

他の誰かが言ったように、この種の構文は使用しないでください。代わりに書いてください

index++;
result = someArray[index];
于 2011-08-28T00:31:09.257 に答える
4

Java および同様の言語でindex++は、式が評価された後にのみ値をインクリメントします。変数を使用する前にインクリメントする場合は、 を使用します++index

この場合、 の元の値を使用してindexを取得resultし、その値を 1 に増やします。

于 2011-08-28T00:27:22.457 に答える
3

通過someArray[0]してからインクリメントしますindex

Android には依存しません。一般的なルールは次のとおりです。

index++ は index を評価してからインクリメントすることを意味し、++index はインクリメントしてから評価することを意味します

于 2011-08-28T00:27:13.980 に答える
1

1.) この種のことは避けてください。実際、私がレビューするコードでは、決してこれをしないようにお願いしています。

特に ++ を使用しているわけではありませんが、他の何かを評価する一環としてそれを行っているという事実です。一般に、そのインクリメントを別のステートメントとして持つためにコンパイラーに余分なコストはかかりません。そのようにインライン化すると、次の人が少し時間をかけてインクリメントを自分で評価する必要があります。

私はそれが些細なことであり、少し厄介であることを知っていますが、このようなものはコードレビュー中に余分な時間を費やし、スキャン中に見逃すのは簡単です. IMOの価値はありません。

2) someArray[0] を取得し、次の行に移動すると、インデックスがインクリメントされます。

于 2011-08-28T00:29:40.157 に答える