admin 管理员组

文章数量: 887021


2024年2月18日发(作者:wap2怎么设置)

优先级 运算符 含义 要求运算

对象的个数

结合方向

1 ( )

[ ]

->

.

圆括号

下表运算符

指向结构体成员运算符

结构体成员运算符

逻辑非运算符

按位取反运算符

自增运算符

自减运算符

负号运算符

类型转换运算符

指针运算符

取地址运算符

长度运算符

乘法运算符

除法运算符

求余运算符

加法运算符

减法运算符

左移运算符

右移运算符

自左至右

2 !

~

++

--

-

(类型)

*

&

sizeof

1

(单目运算符)

自右至左

3 *

/

%

2

(双目运算符)

2

(双目运算符)

2

(双目运算符)

自左至右

自左至右

4 +

-

5 <<

>>

自左至右

6 < <= > >=

关系运算符

2

(双目运算符)

2

(双目运算符)

2

(双目运算符)

2

(双目运算符)

2

(双目运算符)

2

(双目运算符)

2

(双目运算符)

3

(三目运算符)

2

(双目运算符)

自左至右

7 ==

!=

等于运算符

不等于运算符

按位与运算符

自左至右

8 &

自左至右

9 ^

按位异或运算符

自左至右

10 |

按位或运算符

自左至右

11 &&

逻辑与运算符

自左至右

12 ||

逻辑或运算符

自左至右

13 ? :

条件运算符

自右至左

14 = += -= *=

赋值运算符

/= %= > >=

< <= &= ^= |=

自右至左

15 ,

逗号运算符

(顺序求值运算符)

自左至右

说明:

(1) 同一优先级的运算符,运算次序由结合方向决定。例如 * 与 / 具有相同的优先级别,其结合方向为自左至右,因此3*5/4的运算符次序是先乘后除。- 和 ++

为同一优先级,结合方向为自右至左,因此 -i++相当于-(i++)。

(2) 不同的运算符要求有不同的运算对象个数,如 + (加)和 - (减)为双目运算符,要求在运算符两侧各有一个运算对象(3+5、8-3等)。而 ++ 和 - (负号)运算符是单目运算符,只能在运算符的一侧出现一个运算对象(如 – a、i++、--i、(float)i、sizeof (int)、*p等)。条件运算符是C语言中唯一的一个三目运算符,如 x ? a:b。

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

初等运算符 ( ) [ ] -> .

单目运算符

算术运算符 (先乘除后加减)

关系运算符

逻辑运算符(不包括!)

条件运算符

赋值运算符

逗号运算符

以上的优先级别由上到下递减。初等运算符优先级最高,逗号运算符优先级最低。位运算符的优先级比较分散(有的在算术运算符之前(如~),有的在关系运算符之前(如>>和<<),有的在关系运算符之后(如&,^、|))。为了容易记忆,使用位运算符时可加圆括号


本文标签: 运算符 双目 运算 结合