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作为+(补充)TRUE 如 1FALSE 如 0因此,将其视为简单的数学就可以得到:
0 * 0 = 01 * 0 = 01 * 1 = 10 + 0 = 01 + 0 = 11 + 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
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