关于循环的问题

时间:2011-02-08 20:01:27

标签: c++

while(thingA is true)
{
}
if(thingA is not true)
{
    make thingA true
    then back to looping
}

我的问题是如果循环是真的它将继续循环但是如果它不是我将通过其他代码使其成为真,之后我希望它再次循环。我能这样做吗??

4 个答案:

答案 0 :(得分:5)

我的问题是,如果你想循环直到某些东西是假的,那么一旦它被设置为真并重新循环,为什么要检查条件呢?为什么不呢:

while (true)
{
    if (thingA is not true)
    {
        // do whatever you want 
    }
}

我的观点是,如果您想要做的就是让它成为真实并重新循环,为什么要停止循环呢?

答案 1 :(得分:2)

你所描述的内容将永远循环,无论thingA的值如何(你总是会回到循环中)。如果您需要在thingA状态发生变化时采取某些措施,那么您只需要:

while (1)
{
    if (!thingA) { /* Some action */ }
    ...
}

答案 2 :(得分:1)

您提供的代码块实际上是一个无限循环。原因是thingA通过true循环保持while,直到它评估为false并突破循环。然后由if语句检查它是否检查它是false - 它必须是,还是while循环不会被破坏。然后再循环一下。

在无限循环中检查thingA是否为假并执行特殊情况逻辑。

答案 3 :(得分:0)

不要在同一个函数中重新排列代码,而是尝试将公共代码移动到单独的函数中。这将使您的代码更易于理解,并且流程更易于理解。

在你的情况下,你可能想要这样的东西:

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
   ...
   }
}