章 10. 运算符

运算符优先级

运算符优先级指定了两个表达式绑定得有多“紧密”。例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高。必要时可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。

下表从低到高列出了运算符的优先级。

表格 10-1. 运算符优先级

结合方向运算符
左,
左or
左xor
左and
右print
右 = += -= *= /= .= %= &= |= ^= ~= <<= >>=
左? :
左||
左&&
左|
左^
左&
无== != === !==
无< <= > >=
左<< >>
左+ - .
左* / %
右! ~ ++ -- (int) (float) (string) (array) (object) @
右[
无new

注: 尽管 ! 比 = 的优先级高,PHP 仍旧允许类似如下的表达式:if (!$a = foo()),在此例中 foo() 的输出被赋给了 $a。