C语言运算符优先级和结合性

时间:2021-10-12 17:22:09

 附录C C语言运算符优先级和结合性

优先级

运算符

含义

运算类型

结合性

1

     [  ]

     ->

      .

圆括号

下标运算符

指向结构体成员运算符

结构体成员运算符

单目

自左向右

2

!

~

++  --

(类型关键字)

+ -

*

&

sizeof

逻辑非运算符

按位取反运算符

自增、自尖运算符

强制类型转换

正、负号运算符  

指针运算符

地址运算符

长度运算符

单目

自右向左

3

*   /  %

乘、除、求余运算符

双目

自左向右

4

+  -

加、减运算符

双目

自左向右

5

<<   

>> 

左移运算符

右移运算符

双目

自左向右

6

< <=  >  >=

小于、小于等于、大于、大于等于

关系

自左向右

7

= =   !=

等于、不等于

关系

自左向右

8

&

按位与运算符

位运算

自左向右

9

^

按位异或运算符  

位运算

自左向右

10

|

按位或运算符

位运算

自左向右

11

&&

逻辑与运算符

位运算

自左向右

12

||

逻辑或运算符

位运算

自左向右

13

?  :

条件运算符

三目

自右向左

14

=  +=  -=  *=

/=  %= <<=  >>=

&= ^= |=

赋值运算符  

双目

自右向左

15

,

逗号运算

顺序

自左向右

 

单目运算符:

1、(   圆括号

   [  ]    下标运算符

   ->     指向结构体成员运算符

    .      结构体成员运算符              自左向右

 

2、!          逻辑非运算符

   ~          按位取反运算符

   ++  --      自增、自尖运算符

   (类型关键字) 强制类型转换

   + -          正、负号运算符

   *          指针运算符

   &          地址运算符

   sizeof       长度运算符                  自右向左

双目运算符:

1*   /  %  乘、除、求余运算符

   +  -        加、减运算符

    <<   >>        左移运算符右移运算符     自左向右

2=  += -=  *=

   /=  %=<<=  >>=

    &= ^= |=       赋值运算符                  自右向左

 

三目运算符:(自右向左)

   ?  :           条件运算符               

关系运算符:(自左向右)

   < <=  > >=    小于、小于等于、大于、大于等于

   = =   !=       等于、不等于            

位运算符:(自左向右)

    &             按位与运算符

    ^              按位异或运算符 

|               按位或运算符

&&            逻辑与运算符

||               逻辑或运算符              

顺序运算符:( 自左向右)

    ,                逗号运算                 
计算机等级考试C语言运算符的优先级口决

C语言运算符的“优先级口决”

  希望对初学C语言语言的朋友有所帮助;当然,应用这个口诀的前提是你必须认识所有的C语言的运算符。

  优先级口诀

括号成员第一; //括号运算符[]()成员运算符. ->

全体单目第二; //所有的单目运算符比如++ -- +(正) -(负) 指针运算*&

乘除余三,加减四; //这个"余"是指取余运算即%

移位五,关系六; //移位运算符:<< >>,关系:> < >= <= 等

等于(与)不等排第七; //即== !=

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

"三分天下"八九十;

逻辑或跟与; //逻辑运算符:||和 &&

十二和十一; //注意顺序:优先级(||) 底于 优先级(&&)

条件高于赋值, //三目运算符优先级排到 13位只比赋值运算符和","高//需要注意的是赋值运算符很多!

逗号运算级最低! //逗号运算符优先级最低

  由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符),所以这个口诀不能完全实用于C++.但是应该能够兼容,大家可以比较一下他们的区别应该就能够很快掌握C++的优先级的!