while(thingA is true)
{
}
if(thingA is not true)
{
make thingA true
then back to looping
}
私の質問は、ループが真の場合はループを維持しますが、そうでない場合は、それを真にするために別のコードを実行します。それをしてもいいですか!?質問ループについて
while(thingA is true)
{
}
if(thingA is not true)
{
make thingA true
then back to looping
}
私の質問は、ループが真の場合はループを維持しますが、そうでない場合は、それを真にするために別のコードを実行します。それをしてもいいですか!?質問ループについて
あなたが提供したコードブロックは、事実上無限ループです。その理由は、thingA
がと評価されてループから抜け出すまで、〜while
ループのままであるためです。次に、if
ステートメントによって、それがfalse
であるかどうかを確認するチェックが行われているか、またはwhile
ループが壊れていないことがチェックされます。それから、もう少しループします。
無限ループ内でthingA
がfalseであることを確認し、特別なケースロジックを実行してください。
私が疑問に思うのは、何かが偽になるまでループしたい場合は、一度それが真に設定されてループし、条件を一切チェックしないのですか?なぜそうではないのですか:
私が指摘していることは、あなたがしたいことが真実であることを望んでいれば、なぜループを止めるのでしょうか?
あなたが説明しているのは、thingA
の値にかかわらず、いつもループします(あなたはいつもループの中に戻ります)。 thingA
変化の状態は、その後、あなたは、単に必要なときにあなたには、いくつかのアクションを実行する必要がある場合:
while (1)
{
if (!thingA) { /* Some action */ }
...
}
コードを同じ関数で並べ替える代わりに、共通コードを別の関数に移動してみてください。これにより、コードを理解しやすくなり、フローを簡単に実行できます。あなたのケースでは
は、おそらくこのような何かしたい:あなたは無限ループを持っている上に書かれたよう
void MyLoopFunction()
{
bool MyCheckVariable = true;
while (MyCheckVariable)
{
...
}
}
void SomeOtherFunction()
{
// Keep executing until infinity
while (true)
{
MyLoopFunction();
// Fell out of the loop, do something else and retry
...
}
}
を! –