原创 运算符和结合顺序问题

2010-5-18 10:05 2023 8 8 分类: MCU/ 嵌入式

temp4 = (ReciveBuf[0]&0x80 == 0x80)&&(ReciveBuf[1]&0xe0 == 0xe0)&&(ReciveBuf[2]&0x80 == 0x80) ;


 


大家觉得表达式的右面有问题吗?一眼看上去好像没什么问题吧,也不知道我在哪个网页也看到过这样的表达式,当时那人在求助问题,细看一下,可以知道问题大了去了.


      我们用第一个表达式为例分析,我的本意是:ReciveBuf[0]的最高位是否为1,若为1这个表达式为真. 可是==操作符的优先级要高于&操作符的优先级,所以表达式会先执行0x80 == 0x80语句,那表达式自然为1,此时若ReciveBuf[0]的最低位为1,整个表达式为真,否则为假.可见这与我们的初衷完全不同.


       后面的两个表达式情况类似.

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条