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] 条件运算符中部(? 与 : 之间)的表达式分析为如同其带有括号:忽略其相对于 ?: 的优先级。

浙公网安备 33010602011771号