temp4 = (ReciveBuf[0]&0x80 == 0x80)&&(ReciveBuf[1]&0xe0 == 0xe0)&&(ReciveBuf[2]&0x80 == 0x80) ;
大家觉得表达式的右面有问题吗?一眼看上去好像没什么问题吧,也不知道我在哪个网页也看到过这样的表达式,当时那人在求助问题,细看一下,可以知道问题大了去了.
我们用第一个表达式为例分析,我的本意是:ReciveBuf[0]的最高位是否为1,若为1这个表达式为真. 可是==操作符的优先级要高于&操作符的优先级,所以表达式会先执行0x80 == 0x80语句,那表达式自然为1,此时若ReciveBuf[0]的最低位为1,整个表达式为真,否则为假.可见这与我们的初衷完全不同.
后面的两个表达式情况类似.
文章评论(0条评论)
登录后参与讨论