C/C++运算符优先级关系

C/C++优先级 从高到低 1~14梯队

1、  ()  []  .  ->

2、   !  ~   -(负号) ++  --   &(取变量地址)*   (type)(强制类型)    sizeof 

3 、  * / % 

4 、  + - 

5 、  >> <<  

6 、  > >= < <= 

7 、  == !=   

8 、  &  

9 、  ^   

10、  |   

11、  &&

12、  ||

13、  ?:

14 、  =  +=  -=  *=  /=   %=  |=   ^=   &=   >>=   <<=

举例

常常分不清优先级了,需要加很多的括号,相当不受看,常用的如下几种情况就不用加括号

*p->x

&p->y

if(a==b+c)

if(a!=b>>1)

相反的,以下情况需要加括号

if(a==(b&c))

 

下边这个点需要注意:(当参与运算的位不纯时,其它位上的值会被当作真来影响结果,即C/C++虽然能进行位运算,但却是用整个字节中的所有位来进行运算的,然后整个字节中所有位的整体值为最终结果的)

int n = 2;
bool b1 = (n ^ 1);//true
bool b2 = (n ^ 2);//false

n = 3;
bool b3 = (n ^ 1);//true
bool b4 = (n ^ 2);//true

 

 

祝君精进!

posted @ 2019-11-18 14:27  IceArrow  阅读(557)  评论(0编辑  收藏  举报