此语句的等价物是什么?
if(cond1 AND cond2 AND cond3 OR cond4 AND cond5 AND cond6)是吗
if((cond1 AND cond2 AND cond3) OR (cond4 AND cond5 AND cond6))或
if(cond1 AND cond2 AND (cond3 OR cond4) AND cond5 AND cond6)或
if(((cond1 AND cond2 AND cond3) OR cond4) AND cond5 AND cond6)ect...
这是我一直害怕接近的东西,我只是把条件放在括号( )中。如果我能安心,那就太好了。
发布于 2017-01-19 16:58:24
记住这一点的一个好方法是用数学的方式来考虑它。
AND as (multiply)OR as * AND as 0 as + (addition)
TRUE as 1FALSE as0所以把它想象成简单的数学,你会得到这样的结果:
0 * 0 = 01 * 0 = 01 * 1 = 10 + 0 = 01 + 0 = 11 + 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)
发布于 2013-05-29 12:47:37
在大多数语言中,首先计算的是AND,因此
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
发布于 2013-05-29 12:46:09
在正常的布尔连接词集合中(从逻辑的角度来看),and的优先级高于or,因此A or B and C实际上是A or (B and C)。Wikipedia按顺序列出它们。大多数编程语言都应该遵守这一约定,除非它们真的很奇怪。
也就是说,对于您的特定语言或环境,应该可以编写一个非常小的测试来满足您自己的需要:)
https://stackoverflow.com/questions/16805630
复制相似问题