为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
倚天杖 2019-06-19 11:05:40
‘和’VS‘&’作为运算符我有一个开发人员决定使用的代码库AND和OR而不是&&和||.我知道运算符的优先级是不同的(&&前去and),但是对于给定的框架(PrestaShop确切地说,这显然不是一个理由。你用的是哪种版本?是and比&&?还是没有区别?
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

如果你用ANDOR,你最终会被这样的事情绊倒:

$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)


查看完整回答
反对 回复 2019-06-19
?
阿晨1998

TA贡献2037条经验 获得超6个赞

取决于它的使用方式,它可能是必要的,甚至是方便的。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)中提到的那样。


查看完整回答
反对 回复 2019-06-19
?
慕容708150

TA贡献1831条经验 获得超4个赞

为了安全起见,我总是把我的比较放在括号里,然后把它们隔开。这样,我就不必依赖操作符优先级:

if( 
    ((i==0) && (b==2)) 
    || 
    ((c==3) && !(f==5)) 
  )


查看完整回答
反对 回复 2019-06-19
  • 3 回答
  • 0 关注
  • 505 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信