首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AND OR操作顺序

AND OR操作顺序
EN

Stack Overflow用户
提问于 2013-05-29 12:40:58
回答 5查看 22.6K关注 0票数 23

此语句的等价物是什么?

代码语言:javascript
复制
if(cond1 AND cond2 AND cond3 OR cond4 AND cond5 AND cond6)

是吗

代码语言:javascript
复制
if((cond1 AND cond2 AND cond3) OR (cond4 AND cond5 AND cond6))

代码语言:javascript
复制
if(cond1 AND cond2 AND (cond3 OR cond4) AND cond5 AND cond6)

代码语言:javascript
复制
if(((cond1 AND cond2 AND cond3) OR cond4) AND cond5 AND cond6)

ect...

这是我一直害怕接近的东西,我只是把条件放在括号( )中。如果我能安心,那就太好了。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-01-19 16:58:24

记住这一点的一个好方法是用数学的方式来考虑它。

  • AND as (multiply)
  • OR as *
    • AND as 0

    as + (addition)

  • TRUE as 1
  • FALSE as0

所以把它想象成简单的数学,你会得到这样的结果:

  • 0 * 0 = 0
  • 1 * 0 = 0
  • 1 * 1 = 1
  • 0 + 0 = 0
  • 1 + 0 = 1
  • 1 + 1 = 1

唯一让人有点困惑的是1 + 1 = 1,但是不能超过1。但是,如果您将1视为任何非零数,这是有意义的。

因此,考虑到这一点,您可以应用以下逻辑:

if(cond1 AND cond2 AND cond3 OR cond4 AND cond5 AND cond6)

变成:

if(cond1 * cond2 * cond3 + cond4 * cond5 * cond6)

请参阅:https://en.wikipedia.org/wiki/Order_of_operations

票数 53
EN

Stack Overflow用户

发布于 2013-05-29 12:47:37

在大多数语言中,首先计算的是AND,因此

代码语言:javascript
复制
if((cond1 AND cond2 AND cond3) OR (cond4 AND cond5 AND cond 6))

是正确的选择。

有关C#,请参见http://msdn.microsoft.com/en-us/library/aa691323%28v=vs.71%29.aspx

有关C语言,请参见http://en.cppreference.com/w/cpp/language/operator_precedence

有关Java,请参阅http://bmanolov.free.fr/javaoperators.php

票数 16
EN

Stack Overflow用户

发布于 2013-05-29 12:46:09

在正常的布尔连接词集合中(从逻辑的角度来看),and的优先级高于or,因此A or B and C实际上是A or (B and C)Wikipedia按顺序列出它们。大多数编程语言都应该遵守这一约定,除非它们真的很奇怪。

也就是说,对于您的特定语言或环境,应该可以编写一个非常小的测试来满足您自己的需要:)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16805630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档