なぜdo whileループはブレーキの後にexcecutes?[定休日]
質問
私はここで奇妙な状況に遭遇しましたが、何が起こるかです。私はaを使用しています do while
ループおよびそれはブレーキの後で間機能もう一つの時間をexceutes。
ここに何が起こるかの単純なバージョンがあります:
int i = 0;
do{
if(i>=1) break;
}while(i++);
そしてこの後 i
値は2です。それがどうあるべきか、またはこのコードのより多くのcopmlexバージョンのどこかでエラーを出したのか、私はちょうど興味がありますか?
これは私がちょうど言うためにaを割り当てる必要があり、このための簡単な修正です iTemp
wgileの先頭にある変数とそのinstedを使用します i
.
追伸私は2つを使用していました do while
別の内部のループ多分それはそれを引き起こしたものですか?
編集:Cmonの人々は私にそれがタイプミスだった休憩を与えます。:D
解決
追伸私は2つのdo whileループを使用していましたが、別のループの中には多分それが原因ですか?
それはよくあるかもしれません。A break
(スペルに注意してください)のみの抜け出すでしょう ワン したがって、内側のループの内側にある場合、そのループから抜け出しますが、内側のループの終わりの直後に実行を続行します。内側の直後に終わる外側のループの(かなり一般的な)ケースでは、外側のループの条件を再び実行することになります。
他のヒント
brake
はキーワードではなく、変更されたバージョンもコンパイルされません。古いバージョンは代わりに、つまり新しい休憩なしで実行されます。
ソリューション:使用 break
.
更新:
追伸私は2つのdo whileループを使用していましたが、別のループの中には多分それが原因ですか?
はい。. break
それが書かれている最も内側のループから抜け出すだけです。
ところで、私はあなたが表示されたループが常に一度だけ実行されることを認識しています。あなたのループ条件は次のとおりです i++
, 、これは増分します i
そして、あなたに価値を与えます 前に インクリメント。あなたの最初の増分の前に, i
は 0
, 、したがって、あなたのループ条件は次のとおりです 0
したがって、最初の実行時には、一度実行されます。
そのチェック break
ない brake
?
int i = 0;
do
{
if(i>=1)
break;
}while(i++);
ループ条件とビークイング条件は次のとおりです 考えられない.「失礼だと思われたらごめんなさい」