本文小编为大家详细介绍“C语言中的运算符和结合性问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言中的运算符和结合性问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
C语言运算符和结合性
优先级 | 运算符 | 含义 | 要求运算对象的个数 | 结合方向 |
---|---|---|---|---|
1 |
|
圆括号 | 自左至右 | |
1 |
|
下标运算符 | 自左至右 | |
1 |
|
指向结构体成员运算符 | 自左至右 | |
1 |
|
结构体成员运算符 | 自左至右 | |
2 |
|
逻辑非运算符 | 1(单目运算符) | 自右至左 |
2 |
|
按位取反运算符 | 1(单目运算符) | 自右至左 |
2 |
|
自增运算符 | 1(单目运算符) | 自右至左 |
2 |
|
自减运算符 | 1(单目运算符) | 自右至左 |
2 |
|
负号运算符 | 1(单目运算符) | 自右至左 |
2 |
|
类型转换运算符 | 1(单目运算符) | 自右至左 |
2 |
|
指针运算符 | 1(单目运算符) | 自右至左 |
2 |
|
取地址运算符 | 1(单目运算符) | 自右至左 |
2 |
|
长度运算符 | 1(单目运算符) | 自右至左 |
3 |
|
乘法运算符 | 2(双目运算符) | 自左至右 |
3 |
|
除法运算符 | 2(双目运算符) | 自左至右 |
3 |
|
求余运算符 | 2(双目运算符) | 自左至右 |
4 |
|
加法运算符 | 2(双目运算符) | 自左至右 |
4 |
|
减法运算符 | 2(双目运算符) | 自左至右 |
5 |
|
左移运算符 | 2(双目运算符) | 自左至右 |
5 |
|
左移运算符 | 2(双目运算符) | 自左至右 |
6 |
|
关系运算符 | 2(双目运算符) | 自左至右 |
7 |
|
等于运算符 | 2(双目运算符) | 自左至右 |
7 |
|
不等于运算符 | 2(双目运算符) | 自左至右 |
8 |
|
按位与运算符 | 2(双目运算符) | 自左至右 |
9 |
|
按位异或运算符 | 2(双目运算符) | 自左至右 |
10 |
|
按位或运算符 | 2(双目运算符) | 自左至右 |
11 |
|
逻辑与运算符 | 2(双目运算符) | 自左至右 |
12 |
|
逻辑或运算符 | 2(双目运算符) | 自左至右 |
13 |
|
条件运算符 | 3(三目运算符) | 自右至左 |
14 |
|
赋值运算符 | 2(二目运算符) | 自右至左 |
15 |
|
逗号运算符(顺序求值运算符) | 自左至右 |
同一优先级的运算符,运算次序由结合方向决定。
-
和++
为同一优先级,结合方向为自右至左,因此-i++
相当于-(i++)
;不同的运算符要求有不同的运算对象个数,如
+
和-
为双目运算符,要求在运算符两侧各有一个运算对象(3+5
)。而
++
和-
(负号)运算符是单目运算符,只能在运算符的一侧出现一个运算对象(如-a
、i++
、--i
、(float)i
、sizeof(int)
、*p
等)。条件运算符是C语言中唯一的三木运算符,如
x?a:b
。从上表中可以大致归纳出各类运算符的优先级
以上的优先级别由上到下递减。初等运算符优先级最高,逗号运算符优先级最低。
位运算符的优先级比较分散(有的在算术运算符之前(如
~
),有的在关系运算符之前(如<<
和>>
),有的在关系运算符之后(如&
、^
、|
))。为了容易记忆,使用位运算符时可加圆括号。