我可以简化这个使用逻辑否定运算符的条件语句吗?
Posted
技术标签:
【中文标题】我可以简化这个使用逻辑否定运算符的条件语句吗?【英文标题】:Can I simplify this conditional statement, which uses the logical negation operator? 【发布时间】:2011-03-11 18:24:43 【问题描述】:抱歉,这是一个“逻辑运算符 101”之类的问题。我盯着屏幕看了 15 分钟,试图绕开它,但我被卡住了。
是否有更简洁/优雅的方式来表达以下内容(这是 javascript 语法,但不是与语言相关的问题):
if (!something && !something_else)
// do something
根据一些实验,这似乎不是逻辑上的等价物:
if (!(something && something_else)
// do something
此外,任何人都可以推荐在线资源以进一步研究此类问题吗?我假设这种类型的东西在计算机科学课程的抽象层面上有所涵盖,这是我真正想填补的编程知识中的一个重要空白。谢谢!
【问题讨论】:
【参考方案1】:(Not A) And (Not B)
相当于:
Not (A Or B)
这是De Morgan's laws的应用程序
【讨论】:
谢谢,米奇!这里所有正确的答案 - 非常感谢 - 但我也感谢您提供的链接。这正是我想要的。 @Bungle。那你应该接受他的回答。他会很感激我确定 @Ben:会的。不过,看起来 SO 会让你等待大约 10 分钟。【参考方案2】:正确的表达方式应该是:
if (!(something || something else))
// do something
当您应用否定时,它会在 AND 和 OR 之间切换运算符。
【讨论】:
【参考方案3】:我想,你需要
if (!(something || something_else))
// do something
!something && !something_else 的意思是“既不是某事也不是某事_else”,相当于“既不(某事或某事_else)”
【讨论】:
【参考方案4】:你所描述的一个词是非门,或非门。
【讨论】:
以上是关于我可以简化这个使用逻辑否定运算符的条件语句吗?的主要内容,如果未能解决你的问题,请参考以下文章
Python中使用逻辑与运算符“and”判断两个比较条件是否满足时编辑器提示“Simplify chained comparison ”的解决方法