为什么while循环或不起作用但是AND?

时间:2013-11-30 22:48:46

标签: c# while-loop conditional-statements

我在C#中有一个简单的while循环,基本上我正在测试两个条件

while (opponentOne.HP >= 0 || opponentTwo.HP >= 0)

当我读到这意味着,当第一个对手HP超过0或者对手HP的秒数大于等于0时,退出。那么当只有其中一个为真时,退出while循环?

然而,这并不是我想做的事情,它会在退出循环之前等待它们变为真,但是如果我改变了||和&&它会起作用

while (opponentOne.HP >= 0 && opponentTwo.HP >= 0)

现在说,虽然第一次对手HP超过0且秒数对手超过0,但退出......

我在这里混淆了什么吗?

我认为当两个条件都满足时,循环应该会中断。

3 个答案:

答案 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