运算符的优先级问题
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 位只比赋值运算符和","高
逗号运算级最低! //逗号运算符优先级最低
从这个运算符个关系在来看这个题目:
- Expression: c=((x&(MASK==0))
- z=y=x+- +(++y)*2 //现在还不会分析,以后再,有疑问
- Expression:y>>((x&0x2)&&z)//后续验证看是否正确
*******************************
工具至上
Email:zsc1528@gmail.com
QQ:2743230905
*******************************
posted on 2012-08-18 10:30 micky.zhou 阅读(215) 评论(0) 编辑 收藏 举报