This question already has answers here:
deMorgan rules explained
(8个答案)
3年前关闭。
我有类似的情况:
每个InRange变量都是布尔值。
所需的行为是,如果这些值中的任何一个为False,我都想做点什么,但它不能那样工作。在触发事件之前,所有值都必须为false。
是否需要写成
而且,无论哪种情况,我都很好奇为什么原始语句不起作用。
(8个答案)
3年前关闭。
我有类似的情况:
if (!(InRange1 || InRange2 || InRange3))
{
//Do Something
}
每个InRange变量都是布尔值。
所需的行为是,如果这些值中的任何一个为False,我都想做点什么,但它不能那样工作。在触发事件之前,所有值都必须为false。
是否需要写成
if (!InRange1 || !InRange2 || !InRange3)
{
//do something
}
而且,无论哪种情况,我都很好奇为什么原始语句不起作用。
最佳答案
您可以为此使用DeMorgan's Law。
您拥有的等同于NOR。 !(A | B | C)
等效于DeMorgan定律中的!A & !B & !C
。
您想要的是NAND,所以!(A && B && C)
。这完全等同于您要寻找的-!A | !B | !C
。
09-25 19:31