學習筆記:邏輯運算符也有優先級區別

不嘗試還真不知道,竟然是由於優先級的差異致使,若是是真實編程中遇到,排錯就很困難了,幸好這裏看到了:
php

$a = true;             //聲明一個布爾型變量$a,賦值爲真
$b = true;             //聲明一個布爾型變量$b,賦值爲真
$c = false;            //聲明一個初值爲假的布爾型變量$c
 
if($a or $b and $c){      //用or作判斷
    echo "真";
}else{
    echo "假";
}
 
echo "<br/>";
 
if($a || $b and $c){      //用||作判斷
    echo "真";
}else{
    echo "假";
}


輸出結果:編程


ide

spa


沒有錯,就是「先真,後假」,就是由於and優先級比or高,而||又比and高。。。。字符串


更多詳細的優先級string


運算符優先級
結合方向 運算符 附加信息
非結合 clone new clone 和 new
[ array()
非結合 ++ -- 遞增/遞減運算符        
非結合 ~ - (int) (float) (string) (array) (object) (bool) @ 類型        
非結合 instanceof 類型        
右結合 ! 邏輯操做符        
* / % 算術運算符        
+ - . 算術運算符 和 字符串運算符
<< >> 位運算符        
非結合 < <= > >= <> 比較運算符        
非結合 == != === !== 比較運算符        
& 位運算符 和 引用
^ 位運算符        
| 位運算符        
&& 邏輯運算符        
|| 邏輯運算符        
? : 三元運算符        
= += -= *= /= .= %= &= |= ^= <<= >>= 賦值運算符        
and 邏輯運算符
xor 邏輯運算符        
or 邏輯運算符        
, 多處用到
相關文章
相關標籤/搜索