在php中,为什么10&;10==10返回0?
我正在搞乱PHP操作符,我不明白为什么在php中,为什么10&;10==10返回0?,php,operators,Php,Operators,我正在搞乱PHP操作符,我不明白为什么 10 & 10 == 10 返回0。 这应该比较10和10,这是正确的吗?因为=操作符在&操作符之前被解析,因为解析器判断它更重要。但您可以用括号覆盖默认的运算符求值顺序: (10 & 10) == 10 比较运算符比按位运算符具有更高的精度,因此表达式的计算公式为: 10 & (10 == 10) 10==10的计算结果为true,因此得到10&true 按位&将真值转换为1,因此得到10&1,即0 注意,由于11&1=
10 & 10 == 10
返回0。
这应该比较10和10,这是正确的吗?因为
=
操作符在&
操作符之前被解析,因为解析器判断它更重要。但您可以用括号覆盖默认的运算符求值顺序:
(10 & 10) == 10
比较运算符比按位运算符具有更高的精度,因此表达式的计算公式为:
10 & (10 == 10)
10==10
的计算结果为true,因此得到10&true
按位
&
将真值
转换为1
,因此得到10&1
,即0
注意,由于
11&1===1
表达式与:
( 10 & 10 == 10 ) = ( 10 & (10 == 10) ) = ( 10 & (true) ) = 0
=
的优先级是从右(更高)开始的,它将在&
用于位操作和==用于比较之前进行计算,因此请小心。。。
以下是一个例子:
echo((10 & 12));
打印8是因为10=00001010和12=00001100以及00001010&00001100=00001100=8如果10与10相同,您是否进行比较
IF (10 == 10) {
// condition code
}
或者10和10都是真的
IF (10 && 10) {
// condition code
}
&是php中的按位运算符,并且==测试是否相等 由于of==的优先级(请参见)高于&,因此您的测试与10&(10==10)相同 10==10将返回布尔值true(与二进制中的1相同) 现在我们只剩下10&true,这与10&1相同 按位运算符&查看2个值中的每一位,如果它们都是1和0,则将结果中的对应位设置为1,否则,例如:
5 (101) & 3 (011) = 1 (001)
5 (101) & 2 (010) = 0 (000)
6 (110) & 4 (100) = 4 (100)
因此10(1010)&1(0001)=0(0000),所以10&10==10的结果是0
如果您只想将10与10进行比较,则使用10==10关联性
(10&10)==10
?返回者无任何内容,无效php@elclanrs实际上,在PHP中,感谢您的支持answer@TiLoup这个答案其实是不正确的。这是对的。