簡體   English   中英

在PHP中為什么10&10 == 10返回0的情況?

[英]In php why is it the case that 10 & 10 == 10 returns 0?

我正在搞亂PHP運營商,我無法理解為什么

10 & 10 == 10

返回0.這應該比較10到10這是對的嗎?

比較運算符的優先級高於按位運算符,因此表達式的計算結果如下:

10 & (10 == 10)


10 == 10評估為真,所以你得到10 & true

按位&true轉換為1 ,因此得到10 & 1 ,即0


請注意, 11 & 10 == 10產生1 ,因為11 & 1 === 1

因為在&運算符之前解析了==運算符,因為解析器判斷它更重要。 但您可以使用括號覆蓋默認運算符評估順序:

(10 & 10) == 10

你的表達類似於:

( 10 & 10 == 10 ) = ( 10 & (10 == 10) ) = ( 10 & (true) ) = 0

==優先順序是從右(更高)開始,它將在&之前進行評估

&用於位操作和==進行比較所以要小心......這是一個例子:

echo((10 & 12));

打印8是因為10 = 00001010和12 = 00001100和00001010&00001100 = 00001000 = 8

你在比較10和10是否相同?

IF (10 == 10) {
     // condition code
}

或10和10都是真的

IF (10 && 10) {
    // condition code
}

&是php中的按位運算符,==測試相等性。

由於優先級,請參見http://php.net/manual/en/language.operators.precedence.php ,其中==高於&,您的測試與10&(10 == 10)相同

10 == 10將返回布爾值true(與二進制中的1相同)

現在我們留下10&true,與10&1相同

按位運算符&,查看2個值的每個位,並將結果中的相應位設置為1,如果它們都是1和0,否則,例如:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM