8.4 操作符
成员访问操作符
成员访问操作符的优先级最高。
| 成员访问操作符 | 优先级 | 注解 |
|---|---|---|
| . | 0 | 成员访问 |
| .? | 0 | 带null检查的成员访问 |
一元操作符
一元操作符优先级一致,主要查看其声明的先后顺序。
| 一元操作符 | 优先级 | 注解 |
|---|---|---|
| ~ | -10 | 按位取反 |
| ! | -10 | 逻辑取反 |
| - | -10 | 符号取反 |
| + | -10 | 取绝对值 |
| ++ | -10 | 自增 |
| -- | -10 | 自减 |
二元操作符
在语法解析表达式中,二元表达式最复杂的。
| 二元操作符 | 优先级 | 注解 |
|---|---|---|
| * | -20 | 乘运算操作符 |
| / | -20 | 除运算操作符 |
| % | -20 | 模运算操作符 |
| + | -30 | 加运算操作符 |
| - | -30 | 减运算操作符 |
| << | -40 | 左移操作符 |
| >> | -40 | 逻辑右移操作符 |
| >>> | -40 | 算术右移操作符 |
| < | -50 | 小于操作符 |
| <= | -50 | 小于等于操作符 |
| > | -50 | 大于于操作符 |
| >= | -50 | 大于等于操作符 |
| == | -60 | 等于操作符 |
| != | -60 | 不等于操作符 |
| & | -70 | 位与操作符 |
| ^ | -71 | 位异或操作符 |
| | | -72 | 位或操作符 |
| && | -80 | 逻辑与操作符 |
| || | -81 | 逻辑或操作符 |
三元操作符
三元操作符主要用于比较赋值、简单的比较分支操作。
| 三元操作符 | 优先级 | 注解 |
|---|---|---|
| ? : | -90 |
赋值操作符
赋值类操作符的优先级一致,优先级最低。
| 赋值操作符 | 优先级 | 注解 |
|---|---|---|
| = | -100 | 赋值操作符 |
| *= | -100 | 乘运算复合赋值操作符 |
| /= | -100 | 除运算复合赋值操作符 |
| %= | -100 | 模运算复合赋值操作符 |
| += | -100 | 加运算复合赋值操作符 |
| -= | -100 | 减运算复合赋值操作符 |
| &= | -100 | 位与运算复合赋值操作符 |
| = | -100 | 位或运算复合赋值操作符 |
| ^= | -100 | 位异或运算复合赋值操作符 |
| ~= | -100 | 位取反运算复合赋值操作符 |
| <<= | -100 | 左移运算复合赋值操作符 |
| >>= | -100 | 逻辑右移运算复合赋值操作符 |
| >>>= | -100 | 算术右移运算复合赋值操作符 |
其他操作符
括号表达式中的括号操作符,用于提升表达式的优先级,在算符优先解析算法,该系列是作为基本表达式进行解析的。
| 括号操作符 | 优先级 | 注解 |
|---|---|---|
| () | -10 | 括号操作符 |
| [] | -10 | 数组下标 |
| cast | -10 | 静态类型转换 |
| dyn_cast | -10 | 动态类型转换 |
| () | -10 | 函数调用 |