运算符的优先级:
第一级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
左 :: | 全局作用域 、类作用域 、命名空间作用域 | 略 |
第二级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
左 . | 成员选择 | obj.member |
左 -> | 成员选择 | pointer->member |
左 [] | 下标 | expr[expr] |
左 () | 函数调用、类型构造 | name() |
第三级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
左 ++ | 后置递增运算 | value++ |
左 - - | 后置递减运算 | value- - |
右 typeid | 类型ID 、运行时的ID | typeid(expr) |
右 explicit_cast | 类型转换 | cast_name<type>(expr) |
第四级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
右 ++ | 前置递增运算 | ++value |
右 - - | 前置递减运算 | - -value |
右 ~ | 位求反 | ~expr |
右 ! | 逻辑非 | !expr |
右 - | 一元负号 | -expr |
右 + | 一元正好 | +expr |
右 * | 解引用 | *expr |
右 & | 取地址 | &value |
右 () | 类型的转换 | type(expr) |
右 sizeof | 对象类型参数包的大小 | sizeof expr |
右 new | 创建对象、创建数组 | new、new[] |
右 delete | 释放对象、释放数组 | delete、delete[] |
右 noexcept | 能否抛出异常 | noexcep(expr) |
第五级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
左 ->* | 指向成员选择的指针 | ptr->*ptr_to_member |
左 .* | 指向成员选择的指针 | obj.*ptr_to_member |
第六级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
左 * | 乘法 | expr*expr |
左 / | 除法 | expr/expr |
左 % | 求余 | expr%expr |
第七级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
左 + | 加法 | expr+expr |
左 - | 减法 | expr-expr |
第八级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
左 << | 向左移位 | expr<<expr |
左 >> | 向右移位 | expr>>expr |
第九级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
左 < | 小于 | expr<expr |
左 <= | 小于等于 | expr<=expr |
左 > | 大于 | expr>expr |
左 >= | 大于等于 | expr>=expr |
第十级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
左 == | 等于 | expr==expr |
左 != | 不等于 | expr!=expr |
第十一级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
左 & | 位与 | expr&expr |
第十二级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
左 ^ | 位异或 | expr^expr |
第十三级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
| | 位或 | expr |
第十四级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
左 && | 逻辑与 | expr&&expr |
第十五级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
左 || | 逻辑或 | expr||expr |
第十六级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
右 ? = | 条件 | expr?expr:expr |
第十七级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
右 = | 赋值 | expr=expr |
第十八级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
右 += | 复合赋值 | expr+=expr |
右 -= | 复合赋值 | expr-=expr |
右 *= | 复合赋值 | expr*=expr |
右 /= | 复合赋值 | expr/=expr |
右 %= | 复合赋值 | expr%=expr |
右 <<= | 复合赋值 | expr<<=expr |
右 >>= | 复合赋值 | expr>>=expr |
右 &= | 复合赋值 | expr&=expr |
右 |= | 复合赋值 | expr|=expr |
右 ^= | 复合赋值 | expr^=expr |
第十九级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
右 throw | 抛出异常 | throw expr |
第二十级:
结合律和运算符 | 功能 | 用法 |
---|---|---|
左 , | 逗号 | expr,expr |