C语言运算符的优先级与结合性详解
一、学习目标与重点
学习目标
- 掌握 C 语言运算符的优先级
- 理解运算符的结合性
- 能够正确判断复杂表达式的执行顺序
- 避免因运算符优先级和结合性导致的错误
学习重点
- 运算符优先级的分类与记忆方法
- 结合性的概念与应用场景
- 复杂表达式的求值过程分析
二、运算符优先级的概念与分类
2.1 什么是运算符优先级?
运算符优先级是指在表达式中,不同运算符的执行顺序。优先级高的运算符先执行,优先级低的运算符后执行。例如,乘法运算符的优先级高于加法运算符,因此表达式 2 + 3 * 4 会先计算 3 * 4,然后再计算 2 + 12,结果为 14。
2.2 运算符的优先级分类
C 语言运算符的优先级分为 15 级,从高到低依次排列。以下是常见运算符的优先级分类:
| 优先级 | 运算符 | 说明 |
|---|---|---|
| 1 | () [] -> . | 括号、数组下标、指针成员访问、结构体成员访问 |
| 2 | ! ~ ++ -- + - (类型) sizeof | 逻辑非、按位取反、前缀自增/自减、一元加/减、类型转换、求字节数 |
| 3 | * / % | 乘法、除法、取模 |
| 4 | + - | 加法、减法 |
| 5 | << >> | 左移、右移 |
| 6 | < <= > >= | 小于、小于等于、大于、大于等于 |
| 7 | == != | 等于、不等于 |
| 8 | & | 按位与 |
| 9 | ^ | 按位异或 |
| 10 | ||
| 11 | && | 逻辑与 |
| 12 | ||
| 13 | ?: | 条件运算符 |
| 14 | = += -= *= /= %= &= ^= | = <<= >>= |
| 15 | , | 逗号运算符 |
2.3 记忆运算符优先级的方法
为了便于记忆运算符的优先级,可以使用以下口诀:
单目运算优先级最高,其次是双目运算,最后是三目和赋值运算。
算术运算高于关系运算,关系运算高于逻辑运算。
乘法、除法、取模高于加法、减法。
左移、右移高于比较运算。
按位与高于按位异或,按位异或高于按位或。


