关于逻辑运算符、赋值运算符、位运算符的优先级,还有短路问题。

来源:互联网 发布:java个人简历项目经验 编辑:程序博客网 时间:2024/04/27 07:57
<?php//片段一$a=3;$b=3;if($a++ || $b++){//$b++被短路}echo "$a,$b<br>";//4,3$type = gettype($a);echo $type.'<br>';//integer//片段二$a = 3;$b = 3;if($a=5 || $b++){//逻辑运算符优先级比赋值运算符优先级要高,(5 || $b++)首先进行了逻辑运算,同时$b++被短路。结果赋值给$a。}echo "$a,$b<br>";//1,3$type = gettype($a);echo $type.'<br>';//boolean//片段三$a = 3;$b = 3;if($a=(false || $b=5)){//同上一个片段比较,显式的使用了括号,再次证明片段二的结论。}echo "$a,$b<br>";//1,5$type = gettype($a);echo $type.'<br>';//boolean//片段四$a = 3;$b = 3;if(($a=5) || ($b=5)){//($b=5)被短路,因为($a=5)已经被判断为真。}echo "$a,$b<br>";//5,3$type = gettype($a);echo $type.'<br>';//integer//片段五$a=3;$b=3;if($a++ | $b++){//| 为按位或,是位运算符,和 || 逻辑运算符是不同的。表达式判断的是按位或后的真假。}echo "$a,$b<br>";//4,4$type = gettype($a);echo $type.'<br>';//integer//片段六$a = 3;$b = 3;if($a==5 || $b==5){//比较运算符的优先级要比逻辑运算符的优先级高}echo "$a,$b<br>";//3,3$type = gettype($a);echo $type.'<br>';//integer//片段七$a = 3;$b = 3;if($a=5 | $b=6){//又一按位或的例子。}echo "$a,$b<br>";//7,6$type = gettype($a);echo $type.'<br>';//integer//片段八$a = 3;$b = 3;if($a=5 || $b=5){//和片段二、片段三同理。}echo "$a,$b<br>";//1,3$type = gettype($a);echo $type.'<br>';//boolean?>