C++优先级
时间: 2025-05-10 19:28:26 浏览: 20
### C++ 运算符优先级完整列表
以下是完整的 C++ 运算符优先级列表,按照从高到低的顺序排列。同一行中的运算符具有相同的优先级,并遵循特定的结合性规则。
| 优先级 | 类型 | 运算符 | 结合性 |
|--------|-----------------------|------------------------------------------------------------------------------------------|-----------|
| 1 | 后缀 | `()`, `[]`, `->`, `.`, `++`, `--` | 左到右 |
| 2 | 单目前缀 | `+`, `-`, `!`, `~`, `(type)`, `*`, `&`, `sizeof`, `new`, `delete`, `++`, `--` | 右到左 |
| 3 | 求值 | `::` | 左到右 |
| 4 | 成员访问指针 | `.*`, `->*` | 左到右 |
| 5 | 隐式转换 | | 左到右 |
| 6 | 复合赋值 | `=`, `+=`, `-=` , `*=` , `/=` , `%=` , `<<=` , `>>=` , `&=` , `\|=`, `^=` | 右到左 |
| 7 | 条件表达式 | `? :` | 右到左 |
| 8 | 布尔逻辑 OR | `||` | 左到右 |
| 9 | 布尔逻辑 AND | `&&` | 左到右 |
| 10 | 位异或 | `^` | 左到右 |
| 11 | 位逻辑 OR | `\|` | 左到右 |
| 12 | 位逻辑 AND | `&` | 左到右 |
| 13 | 移位 | `<<`, `>>` | 左到右 |
| 14 | 关系比较 | `<`, `>`, `<=`, `>=` | 左到右 |
| 15 | 相等性判断 | `==`, `!=` | 左到右 |
| 16 | 地址偏移量 | `.*`, `->*` | 左到右 |
| 17 | 加减法 | `+`, `-` | 左到右 |
| 18 | 乘除取模 | `*`, `/`, `%` | 左到右 |
此表格涵盖了所有的标准 C++ 运算符及其优先级[^1][^2]。对于复杂表达式而言,理解这些优先级有助于正确解析程序的行为。
#### 示例代码展示
以下是一个简单的例子,展示了如何通过括号改变默认的运算符优先级:
```cpp
#include <iostream>
using namespace std;
int main() {
int a = 1, b = 2, c = 3;
// 默认情况下 * 的优先级高于 +
cout << "Without parentheses: " << a + b * c << endl;
// 使用括号强制更改优先级
cout << "With parentheses: " << (a + b) * c << endl;
return 0;
}
```
上述代码中,默认行为会先计算乘法再加法;而通过括号可以调整这一顺序[^3]。
阅读全文
相关推荐














