目录

C CPP语言运算符优先级


C 语言运算符优先级

同一优先级的运算符,运算次序由结合方向所决定。 简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

运算符 功能 用法 结合方向 说明
1
[] 数组下标 数组名[常量表达式] –>
() 圆括号 (表达式)/函数名(形参表) –>
. 成员选择(对象) 对象.成员名 –>
-> 成员选择(指针) 对象指针->成员名 –>
2
- 负号运算符 -表达式 <– 单目运算符
~ 按位取反运算符 ~表达式 <– 单目运算符
++ 自增运算符 ++变量名/变量名++ <– 单目运算符
自减运算符 –变量名/变量名– <– 单目运算符
* 取值运算符 *指针变量 <– 单目运算符
& 取地址运算符 &变量名 <– 单目运算符
! 逻辑非运算符 !表达式 <– 单目运算符
(类型) 强制类型转换 (数据类型)表达式 <–
sizeof 长度运算符 sizeof(表达式) <–
3
/ 表达式 / 表达式 –> 双目运算符
* 表达式 * 表达式 –> 双目运算符
% 余数(取模) 整型表达式%整型表达式 –> 双目运算符
4
+ 表达式+表达式 –> 双目运算符
- 表达式-表达式 –> 双目运算符
5
« 左移 变量«表达式 –> 双目运算符
» 右移 变量»表达式 –> 双目运算符
6
> 大于 表达式>表达式 –> 双目运算符
>= 大于等于 表达式>=表达式 –> 双目运算符
< 小于 表达式<表达式 –> 双目运算符
<= 小于等于 表达式<=表达式 –> 双目运算符
7
== 等于 表达式 == 表达式 –> 双目运算符
!= 不等于 表达式 != 表达式 –> 双目运算符
8
& 按位与 表达式&表达式 –> 双目运算符
9
^ 按位异或 表达式^表达式 –> 双目运算符
10
| 按位或 表达式|表达式 –> 双目运算符
11
&& 逻辑与 表达式&&表达式 –> 双目运算符
12
|| 逻辑或 表达式||表达式 –> 双目运算符
13
?: 条件运算符 表达式 1?表达式 2: 表达式 3 <– 三目运算符
14
= 赋值运算符 变量=表达式 <–
/= 除后赋值 变量/=表达式 <–
*= 乘后赋值 变量*=表达式 <–
%= 取模后赋值 变量%=表达式 <–
+= 加后赋值 变量+=表达式 <–
-= 减后赋值 变量-=表达式 <–
«= 左移后赋值 变量«=表达式 <–
»= 右移后赋值 变量»=表达式 <–
&= 按位与后赋值 变量&=表达式 <–
^= 按位异或后赋值 变量^=表达式 <–
|= 按位或后赋值 变量|=表达式 <–
15
逗号运算符 表达式,表达式,… –>

C++ 语言运算符优先级表

运算符 功能 用法 结合方向
:: 全局作用域 ::name <–
:: 类作用域 class::name <–
:: 命名空间作用域 namespace::name <–
. 成员选择 object.member <–
-> 成员选择 pointer->member <–
[] 下标 expr[expr] <–
() 函数调用 name(expr_list) <–
() 类型构造 type(expr_list) <–
++ 后置递增运算 lvalue++ –>
后置递减运算 lvalue– –>
typeid 类型 ID typeid(type) –>
typeid 运行时类型 ID typeid(type) –>
explicit cast 类型转换 cast_name(expr) –>
++ 前置递增运算 ++lvalue –>
== 前置递减运算 –lvalue –>
~ 位求反 ~expr –>
! 逻辑非 !expr –>
- 一元负号 -expr –>
+ 一元正号 +expr –>
* 解引用 *expr –>
& 取地址 &lvalue –>
() 类型转换 (type)expr –>
sizeof 对象的大小 sizeof expr –>
sizeof 类型的大小 sizeof(type) –>
sizeof 参数包的大小 sizeof…(name) –>
new 创建对象 new type –>
new[] 创建数组 new type[size] –>
delete 释放对象 delete expr –>
delete[] 释放数组 delete [] expr –>
noexcept 能否抛出异常 noexcept(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 –>
= 赋值 lvalue = expr –>
*=,/=,%= 复合赋值 lvalue+=expr –>
+=,-== 复合赋值 lvalue+=expr –>
«=, »= 复合赋值 lvalue+=expr –>
&=, =, ^= 复合赋值 –>
throw 抛出异常 throw expr –>
, 逗号 expr, expr <–