(事前に申し訳ありませんが、この質問はおそらく非常に簡単です。私は趣味として、コードを書いて、ちょうど今いくつかのものを中心に私の心をラップしようとしています。)forループに条件がありませんか?
n
がある(ように私は最近、ループ文に遭遇しましたあらかじめ設定された正の整数):
int cnt;
for(cnt=0; n; cnt++){
n &= n - 1;
}
私が正しく理解していれば、ループの真ん中のエントリは、条件にする必要がありますが、全くの状態であることをn;
いないようです。ブールとして理解されていない場合(true
n!=0
およびfalse
の場合はn==0
)。これが正しい考え方であれば、次のコードは上記と完全に同じですか?
int cnt=0;
while(n>0){
n &= n - 1;
cnt++;
}
「はい」の場合、なぜ、whileループの代わりにこれを記述する従来のスタイルを選択するのですか? whileループは最も明確で直感的な選択であると思われるので、私が見逃したforループに利点があるのだろうか?ご意見ありがとうございます!
"明確かつ直観的"は主観的ですが、コードの作成者は 'for'ループがより明確になると考えているかもしれません。私が考えることができる唯一の利点は、 'for'ループがコードの1行少ないことです。 – UnholySheep
@UnholySheepしたがって、両方のコードスニペットが完全に同等であることを暗示していますか?情報ありがとうございました! – Kagaratsch
'while'ループは同等ではありません。条件は' n!= 0'(または単に 'n')でなければなりません。それに加えて、 'for'ループがどのように実装されているかはほとんど変わりません。 –