0 Reference
详情请参考:
[1]:(美)K. N. KING著 ; 吕秀锋, 黄倩译., 金., 吕秀锋, 等. C语言程序设计:现代方法[M]. 第2版. Bei jing: 人民邮电出版社, 2021.
1 C 语言运算符
优先级 | 名称 | 符号 | 结合性 |
---|---|---|---|
1 | 数组取下标 | [] | 左结合性 |
1 | 函数调用 | () | 左结合性 |
1 | 取结构和联合的成员 | . 、-> | 左结合性 |
1 | 自增(后缀) | ++ | 左结合性 |
1 | 自减(后缀) | -- | 左结合性 |
2 | 自增(前缀) | ++ | 右结合性 |
2 | 自减(前缀) | -- | 右结合性 |
2 | 取地址 | & | 右结合性 |
2 | 间接寻址 | * | 右结合性 |
2 | 一元正号 | + | 右结合性 |
2 | 一元负号 | - | 右结合性 |
2 | 按位取反 | ~ | 右结合性 |
2 | 逻辑非 | ! | 右结合性 |
2 | 计算所需空间 | sizeof | 右结合性 |
3 | 强制类型转换 | (<type_name>) | 右结合性 |
4 | 乘法类运算符 | * 、/ 、% | 左结合性 |
5 | 加法类运算符 | + 、- | 左结合性 |
6 | 移位 | << 、>> | 左结合性 |
7 | 关系 | < 、> 、<= 、>= | 左结合性 |
8 | 判等 | == 、!= | 左结合性 |
9 | 按位与 | & | 左结合性 |
10 | 按位异或 | ^ | 左结合性 |
11 | 按位或 | | | 左结合性 |
12 | 逻辑与 | && | 左结合性 |
13 | 逻辑或 | || | 左结合性 |
14 | 条件 | ?: | 右结合性 |
15 | 赋值 | = 、*= 、/= 、%= 、+= 、-= 、<<= 、>>= 、&= 、^= 、|= | 右结合性 |
16 | 逗号 | , | 左结合性 |
2 内容解释
2.1 优先级
在 C 语言中,运算符的优先级越小,越先进行运算。
2.2 结合性
在C语言中,运算符的结合性决定了当多个具有相同优先级的运算符出现在一个表达式中时,它们的计算顺序。结合性可以是从左至右(左结合性)或从右至左(右结合性)
- 左结合性:在表达式中,具有相同优先级的运算符将从左边开始计算。例如,在表达式
a - b - c
中,减法运算符具有左结合性,所以首先计算a - b
,然后用结果减去c
。 - 右结合性:在表达式中,具有相同优先级的运算符将从右边开始计算。例如,在表达式
a = b = c
中,赋值运算符具有右结合性,所以首先执行b = c
,然后将结果赋值给a
。
在C语言中,大多数运算符(包括算术运算符、关系运算符、位运算符和逻辑运算符等)的结合性都是从左至右。只有少数几个运算符(包括赋值运算符、条件运算符以及部分单目运算符)的结合性是从右至左。