C语言中的运算符和结合性问题怎么解决

作者:有用网 阅读量:217 发布时间:2023-10-14
关键字 C语言

本文小编为大家详细介绍“C语言中的运算符和结合性问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言中的运算符和结合性问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

C语言运算符和结合性

优先级 运算符 含义 要求运算对象的个数 结合方向
1
()
圆括号
自左至右
1
[]
下标运算符
自左至右
1
->
指向结构体成员运算符
自左至右
1
·
结构体成员运算符
自左至右
2
!
逻辑非运算符 1(单目运算符) 自右至左
2
~
按位取反运算符 1(单目运算符) 自右至左
2
++
自增运算符 1(单目运算符) 自右至左
2
--
自减运算符 1(单目运算符) 自右至左
2
-
负号运算符 1(单目运算符) 自右至左
2
(类型)
类型转换运算符 1(单目运算符) 自右至左
2
*
指针运算符 1(单目运算符) 自右至左
2
&
取地址运算符 1(单目运算符) 自右至左
2
sizeof
长度运算符 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

从上表中可以大致归纳出各类运算符的优先级

C语言中的运算符和结合性问题怎么解决

以上的优先级别由上到下递减。初等运算符优先级最高,逗号运算符优先级最低。

位运算符的优先级比较分散(有的在算术运算符之前(如

~
),有的在关系运算符之前(如
<<
>>
),有的在关系运算符之后(如
&
^
|
))。

为了容易记忆,使用位运算符时可加圆括号。


#发表评论
提交评论