我在捣乱PHP操作符,我不明白为什么
10 & 10 == 10
返回0。这应该比较10到10,这是真的,对吗?
发布于 2014-07-31 22:36:15
比较运算符比按位运算符具有higher precedence,因此表达式计算为:
10 & (10 == 10)
10 == 10
的计算结果为true,因此您将得到10 & true
。
按位&
将true
转换为1
,因此得到10 & 1
,即0
。
注意,11 & 10 == 10
导致1
,因为11 & 1 === 1
。
发布于 2014-07-31 22:35:24
因为==
操作符是在&
操作符之前解析的,因为解析器判断它更重要。但是,可以用括号覆盖默认的运算符计算顺序:
(10 & 10) == 10
发布于 2014-07-31 22:37:19
您的表达方式类似于:
( 10 & 10 == 10 ) = ( 10 & (10 == 10) ) = ( 10 & (true) ) = 0
==
的优先级从右(更高)开始,它将在&
之前进行评估。
https://stackoverflow.com/questions/25069999
复制相似问题