我在捣乱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
复制相似问题