结合方向 |
运算符 |
描述 |
说明 |
无 |
clone new |
clone 和 new
|
|
其他 |
[ ] |
其他
|
|
右 |
++ 、 -- 、 () 、 ~、 int 、 float 、 string 、array、object、bool、 @ |
类型和递增、递减、错误抑制 |
|
右 |
! |
逻辑运算符
|
|
左 |
|
算术运算符
|
|
左 |
+ - . |
算术运算符和字符串运算符
|
|
左 |
<< 左移 >> 右移 |
位运算符
|
|
无 |
== != === !== < > A <>B 不等运算符有两种写法 |
比较运算符
|
|
左 |
& 按位与 |
位运算符和引用
|
|
左 |
^ 按位异或 |
位运算符
|
|
左 |
| 按位或 |
位运算符
|
|
左 |
&& 逻辑与 |
逻辑运算符
|
|
左 |
|| 逻辑或 |
逻辑运算符
|
|
左 |
? : |
三元运算符 |
|
右 |
= += -= *= /= .= %= &= |= ^= <<= >>= => |
赋值运算符
|
|
左 |
and (按位与) |
逻辑运算符(与) $a & $b |
将把 $a 和 $b 中都为 1 的位设为 1。 |
左 |
xor (按位异或) |
逻辑运算符(异或)
|
|
左 |
or (按位或) |
逻辑运算符(或)
|
|
左 |
, |
|
|
运算符分类:三大类
单目运算符
++、--、!、~位运算(按位非)
双目运算符
+、 -、 *、 /、 %、 >、 <、 ==、
三目运算符
? :
容易混淆的运算符口诀:
先乘除后加减,比较逻辑跟着算,非子来了最优先!
也就是优先级:!(非) > 数学类 > 比较类 > 逻辑类
运算符考虑思想:
1、优先级,2、结合方向 3、特例 4、BUG 5、不同类型运算间的转换
未明确优先级别的运算符:
类型检查 instanceof 示例: objA instanceof A
其他说明:
运算符与操作数的各种结合情况异常复杂,特殊的案例结果不可预知,无法完全记忆。为了避免特性及BUG
的发生,书写时要求逻辑清晰,操作数配合运算符要尽量有意义。
以下的特性或bug注意避免其出现就行,以下是示意代码
<?php
$a =1 ;
$b = $a + $a +$a=2;
//4=1+1+2
// 结果$b是多少?
?>
特例中的编程思想:
在一个有歧义或多种可能运算中,优先按正常顺序尝试进行,如果不行再改变方案。
<?php
$a =1 ;
$b = &$a;
$c = ++ $a + $a ++;
// 结果$c是多少?
?>