2011-02-08 59 views
1
while(thingA is true) 
{ 
} 
if(thingA is not true) 
{ 
    make thingA true 
    then back to looping 
} 

我的问题是,如果循环是真的,那将不断循环,但如果它不是我将通过aonther代码,使其真实,在那之后我又希望它循环。我能做到这一点!?一个问题有关循环

+3

正如上面写的你有一个无限循环! – 2011-02-08 20:05:20

回答

1

您提供的代码块实际上是一个无限循环。原因是因为thingA保持truewhile循环,直到它的计算结果为false并跳出循环。然后,它是由if语句来检查,看它是否是false检查 - 它必须是,或while循环就不会被打破。然后你循环更多一些。

只需检查thingA在无限循环内是否为假,并执行您的特殊情况逻辑。

5

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

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

我的观点只是,如果你想要做的就是让它真正和重新循环,为什么要停止循环呢?

2

无论thingA的值如何(您总是会回到循环中),您所描述的将永远循环。如果您需要的时候thingA的状态发生改变,那么你只需要采取一些行动:

while (1) 
{ 
    if (!thingA) { /* Some action */ } 
    ... 
} 
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 
    ... 
    } 
}