由邏輯異或運算子而發現的PHP詭異運算子優先順序

2021-07-22 16:36:37 字數 1135 閱讀 8810

php的邏輯運算子中,xor表示邏輯異或

$a

xor$b

結果

如果 $a 和 $b 有且僅有乙個為 true,則返回 true;如果都是true 或 false,則返回false。
然而在測試xor運算子時,發現一點問題

錯誤情況1

<?php

$a = false

xortrue;

var_dump($a);

?>

結果1

boolean

false

情況2

<?php

$a = true

xo***lse;

var_dump($a);

?>

結果2

boolean

true

這是怎麼回事呢?

我們換個測試xor運算子的方式

情況3

<?php

echo

false

xortrue;

?>

結果3

1
這樣就沒問題了,那麼前兩種情況是**有毛病呢?

情況4

<?php

$a = (false

xortrue);

var_dump($a)

?>

結果4

boolean

true

這樣就對了,可見應是運算子優先順序導致的。

在php中,and、or、xor的運算子優先順序是比 = 低的,在這種情況下,加個小括號就好了……

異或運算子

表示當兩個數的二進位制表示,進行異或運算時,當前位的二進位制相同為0,不同為1.表示為 特點 0異或任何數,是任何數 1異或任何數,任何數取反 任何乙個數字異或自己都等於0 面試題 乙個整型陣列中除了兩個數字之外,其他的數字都出現了兩次。試找出這兩個只出現一次的數字。劍指offer 例如,陣列 中,...

異或運算 運算子 對異或運算子的認識以及初次運用

1 0 1 相同的二進位制位相異或結果不變.int x 3 int y 4 x x y x 3 4 y x y y 3 4 4 3 x x y x 3 4 3 4 上述運算的結果是 x和y的值互換.而過程中並沒有使用別的運算子.即所說的沒有借助其它變數就實現了兩個變數的交換.異或運算是與 並列的位運...

C的 異或 !運算子

1 按位與運算子 按位與運算將兩個運算分量的對應位按位遵照以下規則進行計算 0 0 0,0 1 0,1 0 0,1 1 1。即同為 1 的位,結果為 1,否則結果為 0。例如,設3的內部表示為 00000011 5的內部表示為 00000101 則3 5的結果為 00000001 2 按位或運算子 ...