C++中的多条件while循环

4
我应该如何创建一个循环,直到满足多个条件之一才停止。例如:
do
{
    srand (time(0));
    estrength = rand()%100);

    srand (time(0));
    strength = rand()%100);
} while( ) //either strength or estrength is not equal to 100

这个例子可能有些简单,但我相信你们都能理解。

我知道有 && 运算符,但是我希望它只满足一个条件并继续执行,而不是两个条件都要满足。


当满足条件时,只需从循环中使用 break 命令跳出循环,否则继续循环。 - DashControl
5
不要多次调用srand函数。 - Daniel Kamil Kozar
4个回答

10

使用 ||&& 运算符来组合您的条件。

示例:

1.

do
{
   ...
} while (a || b);

只要 a 或者 b 中有一个为真,就会循环。

2.

do
{
...
} while (a && b);

只要ab都是真的,就会循环。


2
可以解析为布尔值的任何内容都是可以接受的,就像if语句一样。是的。 - MobA11y
@ConMaki 是的 - 一个布尔表达式。只需记住,在这种情况下,如果表达式为真(就像您输入“if”一样),循环将继续循环。因此,在设计条件时,始终考虑保持循环的条件。 - Daniel Daranas

7
while ( !a && !b ) // while a is false and b is false
{
    // Do something that will eventually make a or b true.
}

或等价地

while ( !( a || b ) ) // while at least one of them is false

操作符优先级表可以在创建更复杂的逻辑语句时很有用,但我通常建议大量使用括号以使您的意图清晰明确。

如果你感到理论上的兴趣,你可能会喜欢德摩根定律


2
做一些最终会使 a 或 b 成为真的事情。...或者不要!哈哈哈 - Daniel Kamil Kozar
@DanielKamilKozar 好吧,无限循环是未定义的行为,但随你喜欢... - BoBTFish
那个评论只是为了好玩而已。 :) - Daniel Kamil Kozar
有些人喜欢过危险的生活! - BoBTFish

2
do {

    srand (time(0));
    estrength = rand()%100);

    srand (time(0));
    strength = rand()%100);

} while(!estrength == 100 && !strength == 100 )

2
do {
  // ...
} while (strength != 100 || estrength != 100)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接