This question already has answers here:
deMorgan rules explained
                                
                                    (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