C++ 优先级

https://zh.cppreference.com/w/cpp/language/operator_precedence

优先级 运算符 描述 结合性
1 :: 作用域解析 从左到右
2 a++   a-- 后缀自增与自减
type( )   type{ } 函数风格转型
a( ) 函数调用
a[ ] 下标
.   -> 成员访问
3 ++a   --a 前缀自增与自减 从左到右
+a   -a 一元加与减
!   ~ 逻辑非和逐位非
(type) C 风格转型
*a 间接(解引用)
&a 取址
sizeof 取大小[注 1]
co_await await 表达式 (C++20)
new   new[ ] 动态内存分配
delete   delete[] 动态内存分配
4 .*   ->* 成员指针 从左到右
5 a*b   a/b   a%b 乘法、除法与余数
6 a+b   a-b 加法与减法
7 <<   >> 逐位左移与右移
8 <=> 三路比较运算符 (C++20 起)
9 <   <=
>   >=
分别为 < 与 ≤ 的关系运算符
分别为 > 与 ≥ 的关系运算符
10 ==   != 分别为 = 与 ≠ 的关系运算符
11 a&b 逐位异或(互斥或)
12 | 逐位或(可兼或)
13 ==   != 分别为 = 与 ≠ 的关系运算符
14 && 逻辑与
15 || 逻辑或
16 a?b:c 三元条件[注 2] 从右到左
throw throw 运算符
co_yield yield 表达式 (C++20)
= 直接赋值(C++ 类默认提供)
+=   -= 以和及差复合赋值
*=   /=   %= 以积、商及余数复合赋值
<<=   >>= 以逐位左移及右移复合赋值
&=   ^=   |= 以逐位与、异或及或复合赋值
17 逗号 从左到右

[注 1] sizeof 的操作数不能是 C 风格转型:表达式 sizeof (int) * p 无歧义地解释成 (sizeof(int)) * p ,而非 sizeof((int)*p)
[注 2] 条件运算符中部(?: 之间)的表达式分析为如同其带有括号:忽略其相对于 ?: 的优先级。

posted @ 2021-12-31 10:39  Xun_BKY  阅读(221)  评论(0)    收藏  举报