首页 > 代码库 > 运算符的优先级

运算符的优先级

                                                                 运算符的优先级和结合性

   

   

   

运算对象个数

1

()

圆括号

 

自左向右

[]

下标运算符

?>

指向结构体成员运算符

.

结构体成员运算符

2

!

逻辑非运算

1(单目)

自右向左

按位取反运算

++

自增运算符

? ?

自减运算符

?

负号运算符

(类型)

类型转换运算符

*

指针运算符

&

地址运算符

sizeof

长度运算符

续表   

   

   

   

运算对象个数

3

*

乘法运算符

2(双目)

自左向右

/

除法运算符

%

求余运算符

4

+

加法运算符

减法运算符

2(双目)

自左向右

?

5

<< 

左移运算符

2(双目)

自左向右

>> 

右移运算符

6

关系运算符

2(双目)

自左向右

<=

>=

7

= =

等于运算符

不等于运算符

2(双目)

自左向右

!=

8

&

按位与运算符

2(双目)

自左向右

9

^

按位异或运算符

2(双目)

自左向右

10

|

按位或运算符

2(双目)

自左向右

11

&&

逻辑与运算符

2(双目)

自左向右

12

||

逻辑或运算符

2(双目)

自左向右

13

?:

条件运算符

3(三目)

自右向左

14

=

+=

?=

*=

/=

%=

>>=

<<=

&=

^=

|=

赋值运算符

2(双目)

自右向左

15

逗号运算符

 

自左向右

 

这些运算符的优先级看起来比较凌乱,表4-10所示为一个简单易记的口诀,可以帮助记忆。

表4-10                                                       运算符的优先级口诀

   

   

括号成员第一

括号运算符[]()成员运算符.?>

全体单目第二

所有的单目运算符,比如++??+()?()

乘除余三,加减四

这个“余”是指取余运算即%

移位五,关系六

移位运算符:<<>>,关系:><>=<=

等于()不等排第七

= =!=

位与异或和位或“三分天下”八九十

这几个都是位运算:位与(&)异或(^)位或(|)

逻辑或跟与

十二和十一

逻辑运算符:||&&

注意顺序:优先级(||)低于优先级(&&)

续表   

   

   

条件高于赋值

三目运算符优先级排到14位只比赋值运算符和“,”高,需要注意的是赋值运算符很多

逗号运算级最低

逗号运算符优先级最低

运算符的优先级