运算符的优先级问题

  Using procedure rules, evaluate the following expressions and determine the value of

the variable(without running the code).Also rewrite them using parenthesis to make the

order explicit.

  • Assume (x=0xFF33,MASK=0xFF00) Expression: c=x&MASK==0;
  • Assume(x=10,y=2,z=2).Expression:z=y=x+-+++y*2;
  • Assume(x=10,y=4,z=1).Expression:y>>x&0x2&&z

  以前对运算符优先级的问题没有深入记忆过,以为大概就可以,可是面对上面的表达式,我必须看着书

才能把优先级给理顺,对于上面的试题很无语,自己的基础知识有时候太不牢靠了

一共有十五个优先级: 

1   ()  []  .  ->

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

3   * / %

4   + - 

5   >> <<  

6   > >= < <= 

7   == !=   

8   &  

9   ^   

10  |   

11  &&

12  ||

13  ?:

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

15  ,

就着多吧   结合性:2   13  14  是从右至左   其他都是  从左至右有问题可以在交流的 

 

共同进步 

 


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

全体单目第二;        //所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&乘除余三,加减四;   //这个"余"是指取余运算即%

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

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

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

"三分天下"八九十;  

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

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

条件高于赋值,        //三目运算符优先级排到13 位只比赋值运算符和","高

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

从这个运算符个关系在来看这个题目:

  1. Expression: c=((x&(MASK==0))
  2. z=y=x+- +(++y)*2   //现在还不会分析,以后再,有疑问
  3. Expression:y>>((x&0x2)&&z)//后续验证看是否正确

posted on 2012-08-18 10:30  micky.zhou  阅读(215)  评论(0编辑  收藏  举报

导航