次の 2 つのコード スニペットの違いを教えてください。
int i = 0;
for(i; i < test; i++) {...}
と
for(int i = 0; i < test; i++) {...}
i
-increment 変数を初期化するこれらの方法に違いはありますか? それは何かに影響しますか?
違いは、変数のスコープですi
。
最初のものでi
は for ループの外側に表示され、2 番目のものでは表示されません。
for ループ スコープの外側で i 変数を使用できる場合。場合によっては、そうすることができません。for ループ スコープでのみ使用できます。
どちらの場合も、変数は 1 回定義されています (重大なパフォーマンスやメモリの問題はありません)。違いは、範囲と表現にあります。最初のケースでは、ステートメントi
の範囲外で利用可能になります。for
最初のケースは、たとえば、要素の特定のインデックスを見つけたい場合 (このアプローチよりも優れた代替手段が存在する場合)、または特定の条件が満たされるまで繰り返し処理を行いたい場合に役立ちます。 index でループが停止しました。
2 つ目は慣用句です。最初のものはそうではなく、最小の驚きの原則に違反しています。
ループi
の前後にアクセスする必要がある場合にのみ、2 番目のものを使用してください。for
ただし、このコードには、そうであることを示唆するものは何もありません。