|
1.4. 词法优先级操作符的优先级和关联性是写入分析器中的硬代码. 大多数操作符都有相同的优先级并且都是左关联的. 这种情况可能会有不那么直观的行为;比如,布尔操作符 "<" 和 ">" 和布尔操作符 "<=" 和 ">=" 之间有着不同的优先级.同样,当你把双目和单目操作符组合使用的时候, 有时候也需要加圆括弧.比如 SELECT 5 ! - 6; will be parsed as SELECT 5 ! (- 6); 因为分析器不知道 ! 定义成了前缀操作符, 而不是中缀操作符. (-- 知道的时候只能是太晚了 --) 要在本例中获得你需要的特性,你要写成 SELECT (5 !) - 6; 这是我们为扩展性付出的代价. Table 1-1. 操作符优先级(递减)
请注意操作符优先级也适用于和上面提到的同名的内建操作符用户定义操作符. 比如,如果你为一些客户数据类型定义一个 "+" 操作符, 那么它和内建的 "+" 操作符有同样的优先级,不管你干了什么. |