猿问

‘和’VS‘&’作为运算符

‘和’VS‘&’作为运算符

我有一个开发人员决定使用的代码库ANDOR而不是&&||.

我知道运算符的优先级是不同的(&&前去and),但是对于给定的框架(PrestaShop确切地说,这显然不是一个理由。

你用的是哪种版本?是and&&?还是没有区别?


倚天杖
浏览 506回答 3
3回答

慕桂英3389331

如果你用AND和OR,你最终会被这样的事情绊倒:$this_one = true;$that = false;$truthiness = $this_one and $that;想知道吗$truthiness等价物?如果你说false..不好意思错了!$truthiness以上有价值true..为什么?=有一个较高优先比and..添加括号以显示隐含顺序使这一点更加清晰:($truthiness = $this_one) and $that如果你用&&而不是and在第一个代码示例中,它将按预期工作,并且是false.正如下面的注释中所讨论的,这也可以获得正确的值,因为括号的优先级高于=:$truthiness = ($this_one and $that)

阿晨1998

取决于它的使用方式,它可能是必要的,甚至是方便的。http:/php.net/手动/en/anguage.operators.logical.php// "||" has a greater precedence than "or"// The result of the expression (false || true) is assigned to $e// Acts like:  ($e = (false || true))$e = false || true;// The constant false is assigned to $f and then true is ignored // Acts like: (($f = false) or true)$f = false or true;但在大多数情况下,这似乎更像是一个开发人员喜欢的东西,就像我在CodeIgniter框架(如@Sarfraz)中提到的那样。

慕容708150

为了安全起见,我总是把我的比较放在括号里,然后把它们隔开。这样,我就不必依赖操作符优先级:if(      ((i==0) && (b==2))      ||      ((c==3) && !(f==5))    )
随时随地看视频慕课网APP
我要回答