私の考え方では、forループを使用して、既知の範囲または決定可能な範囲を反復処理します。
String[] names = //something;
for ( int i = 0; i < names.length; i++ ) { //do stuff }
これは(iの範囲を除いて)と同等です:
String[] names = //something;
int i = 0;
while (i < names.length )
{
// do stuff
i++;
}
言い換えれば、for
ループは、一般的に使用されるwhile
構造の単純な(非常に有用な)構文糖です。
しかし、私for(;;)
は機能的にと同等であるウェブ上の多くの構造を見ていますwhile(true)
これの理由は何ですか?無限forループが無限whileループよりも優先されるのはなぜですか?
// whileループをまったく使用しないjavaテキストも見ました!次のような巨大な構成要素につながる:
String input = getInput();
for( ; !inputIsValid(input) ; )
{
//redo;
}
while
とfor
、ここで、問題は変更されません。同じことwhile(true)
をfor(;;)
意味します。あなたは明らかに強い好みを持っていますがwhile
、他の人も同様に強い好みを持っているかもしれませんfor
。一方が他方よりも正しいと言うことは不可能です。
for(;;)
混乱を見つけることはありません。これは標準のCイディオムで、K&R(2e)のセクション3.5で文書化されています。あなたはそれが好きではないことを理解しています。他の人が明らかにそれを好むことを理解する必要があります(そうでない場合は表示されません)。C以外の言語では多かれ少なかれ受け入れられるかもしれません。あなたはこの言語にとらわれないタグを付けました。これは決定的な答えの可能性を減らすだけです。繰り返しになりますが、Qは建設的なものではないため、私は閉会に投票しました。私が気分を害した場合、私は閉鎖の代わりに、または閉鎖に加えて攻撃的としてフラグを立てたでしょう。以上です。
wheeeeeeee { ... }