4.2 运算符优先级

优先级 结合律 运算符 功能 用法
1 :: 全局作用域 ::name
1 :: 类作用域 class::name
1 :: 命名空间作用域 namespace::name
2 . 成员选择 object.member
2 -> 成员选择 pointer->member
2 [] 下标 expr[expr]
2 () 函数调用 name(epxr_list)
2 () 类型构造 type(expr_list)
3 ++ 后置递增运算 lvalue++
3 -- 后置递减运算 lvalue--
3 typeid 类型ID typeid(type)
3 typeid 运行时类型ID typeid(expr)
3 explicit cast 类型转换 cast_name<type>(expr)
4 ++ 前置递增运算 ++lvalue
4 -- 前置递减运算 --lvalue
4 ~ 位求反 ~expr
4 ! 逻辑非 !expr
4 - 一元负号 -expr
4 + 一元正号 +expr
4 * 解引用 *expr
4 & 取地址 &lvalue
4 () 类型转换 (type)expr
4 sizeof 对象的大小 sizeof expr
4 sizeof 类型的大小 sizeof(type)
4 sizeof... 参数包的大小 sizeof...(name)
4 new 创建对象 new type
4 new[] 创建数组 new type[size]
4 delete 释放对象 delete expr
4 delete[] 释放数组 delete []expr
4 noexcept 能否抛出异常 noexcept(expr)
5 ->* 指向成员选择的指针 ptr->*ptr_to_member
5 .* 指向成员选择的指针 obj.*ptr_to_member
6 * 乘法 expr * expr
6 / 除法 expr / expr
6 % 取模(取余) expr % expr
7 + 加法 expr + expr
7 - 减法 expr - expr
8 << 向左移位 expr << expr
8 >> 向右移位 expr >> expr
9 < 小于 expr < expr
9 <= 小于等于 expr <= expr
9 > 大于 expr > expr
9 >= 大于等于 expr >= expr
10 == 相等 expr == expr
10 != 不相等 expr != expr
11 & 位与 expr & expr
12 ^ 位异或 expr ^ expr
13 | 位或 expr | expr
14 && 逻辑与 expr && expr
15 || 逻辑或 expr || expr
16 ? : 条件 expr ? expr : expr
16 = 赋值 lvalue = expr
16 += 复合赋值 lvalue += expr
17 throw 抛出异常 throw expr
18 , 逗号 expr, expr