我在C#中有一个简单的while循环,基本上我正在测试两个条件
while (opponentOne.HP >= 0 || opponentTwo.HP >= 0)
当我读到这意味着,当第一个对手HP超过0或者对手HP的秒数大于等于0时,退出。那么当只有其中一个为真时,退出while循环?
然而,这并不是我想做的事情,它会在退出循环之前等待它们变为真,但是如果我改变了||和&&它会起作用
while (opponentOne.HP >= 0 && opponentTwo.HP >= 0)
现在说,虽然第一次对手HP超过0且秒数对手超过0,但退出......
我在这里混淆了什么吗?
我认为当两个条件都满足时,循环应该会中断。
答案 0 :(得分:3)
条件不是“退出”的条件,这是继续的条件 所以第一个说“只要对手有> 0HP就继续循环”,第二个说“只要两个对手都有> 0HP就继续”
答案 1 :(得分:0)
我在这里混淆了什么吗?
是的,&&
表示双方都必须是true
(两个反对者都必须活着),否则循环就会退出。
||
意味着双方都必须是真的,所以只有一个对手必须活着。
将while
- 循环替换为if
- 语句(仅用于演示目的):
if(opponentOne.lives && opponentTwo.lives)
{
// do something
}
else // one is dead
{
// exit
}
答案 2 :(得分:0)
while循环将保持循环,直到条件成为FALSE。
所以在第一种情况下:
NOT(1.HP> = 0 || 2.HP> = 0)
如果我们将DeMorgan的等效性应用于它:
时会中断
NOT 1.HP> = 0而不是2.HP> = 0