質問

私はここで奇妙な状況に遭遇しましたが、何が起こるかです。私は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 そして、あなたに価値を与えます 前に インクリメント。あなたの最初の増分の前に, i0, 、したがって、あなたのループ条件は次のとおりです 0 したがって、最初の実行時には、一度実行されます。

そのチェック break ない brake?

int i = 0;
do
{    
 if(i>=1) 
    break;
}while(i++);

ループ条件とビークイング条件は次のとおりです 考えられない.「失礼だと思われたらごめんなさい」

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top