说明:表中以双横线分割成不同的段,每段内各个操作符的优先级相同,且都高于后面各段中的操作符。
操作符的优先级 | |||
操作符及其结合性 | 功能 | 用法 | |
L L L | :: :: :: | 全局作用域 类作用域 名字空间作用域 | :: name calss :: name namespace :: name |
L L L L L | . -> [] () () | 成员选择 成员选择 下标 函数调用 类型构造 | object.member pointer->member variable[expr] name(expr_list) type(expr_list) |
R R R R R | ++ -- Typeid Typeid 显式强制类型转换 | 后自增操作 后自减操作 类型ID 运行时类型ID 类型转换 | Lvalue++ Lvalue— Typeid(type) Typeid(expr) Cast_name<type>(expr) |
R R R R R R R R R R R R R R | Sizeof Sizeof ++ -- ~ ! - + * & () New Delete Delete [] | 对象的大小 类型的大小 前自增操作 前自减操作 位求反 逻辑非 一元负号 一元正号 解引用 取地址 类型转换 创建对象 释放对象 释放数组 | Sizeof expr Sizeof(type) ++lvalue --lvalue ~expr !expr -expr +expr *expr &expr (type)expr New type Delete expr Delete []expr |
L L | ->* .* | 指向成员操作的指针 指向成员操作的指针 | Ptr->*ptr_to_member Obj.*ptr_to_member |
L L L | * / % | 乘法 除法 求模(求余) | Expr * expr Expr / expr Expr % expr |
L L | + - | 加法 减法 | Expr + expr Expr - expr |
L L | << >> | 位左移 位右移 | Expr << expr Expr >> expr |
L L L L | < <= > >= | 小于 小于等于 大于 大于等于 | Expr < expr Expr <= expr Expr > expr Expr >= expr |
L L | == != | 相等 不等 | Expr == expr Expr != expr |
L | & | 位与 | Expr & expr |
L | ^ | 位异或 | Expr ^ expr |
L | | | 位或 | Expr | expr |
L | && | 逻辑与 | Expr && expr |
L | || | 逻辑或 | Expr || expr |
R | ? : | 条件操作 | Expr ? expr : expr |
R R R R R | = *= , /= , %=, += , -=, <<= , >>= , &= , |= , ^= | 赋值操作 复合赋值操作 | Lvalue = expr Lvalue += expr等等 |
R | Throw | 抛出异常 | Throw expr |
L | , | 逗号 | Expr, expr |
此表为本人从C++Primer上的摘录下,在word上辛苦制作而成,希望大家有什么新发现也分享出来,大家共同学习共同进步……
——桑海整理