AND OR操作顺序

Isa*_*aac 11 operator-precedence

这个陈述的等价物是什么?

if(cond1 AND cond2 AND cond3 OR cond4 AND cond5 AND cond6)
Run Code Online (Sandbox Code Playgroud)

是吗

if((cond1 AND cond2 AND cond3) OR (cond4 AND cond5 AND cond6))
Run Code Online (Sandbox Code Playgroud)

要么

if(cond1 AND cond2 AND (cond3 OR cond4) AND cond5 AND cond6)
Run Code Online (Sandbox Code Playgroud)

要么

if(((cond1 AND cond2 AND cond3) OR cond4) AND cond5 AND cond6)
Run Code Online (Sandbox Code Playgroud)

等...

这一直是我一直害怕接近的事情,我只围绕括号中的条件( ).如果我的思想得以解决,那就太好了.

Dea*_*two 27

记住这一点的一个好方法是从数学角度考虑它.

  • ANDas *(乘)
  • OR作为+(补充)
  • TRUE1
  • FALSE0

因此,将其视为简单的数学就可以得到:

  • 0 * 0 = 0
  • 1 * 0 = 0
  • 1 * 1 = 1
  • 0 + 0 = 0
  • 1 + 0 = 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

  • 这是考虑布尔运算的一种很酷的方法,它可以作为记住操作顺序的附加助记符。辉煌。谢谢! (2认同)

Vee*_*eer 11

因此,在大多数语言中AND首先进行评估

if((cond1 AND cond2 AND cond3) OR (cond4 AND cond5 AND cond 6))
Run Code Online (Sandbox Code Playgroud)

是正确的选择.

对于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

  • _在**大多数**语言中_:哪些不是? (2认同)