跟if语句没关系,只同位运算有关,再补补课应该能整明白 |
if (dat&0x80),这条语句永远为真,因为不论dat是什么值,&0x80后都不可能为0,所以else永远不会被执行 if ((dat&0x80)==0x80) ,是判断dat&0x80后,是否与0x80相等作为if判断执行条件,当dat=0或0x80,判断为真,执行P1=1; 其它值均执行else,P1=0 |
条件判断是二值判断 |
if (dat&0x80) &0x80判断是否为真,if ((dat&0x80)==0x80) 先&0x80的结果再判断等于 0x80不 |
判断式逻辑错误,因为if (dat&0x80==0x80)中括号内的运算结果是0x00为假 而if (dat&0x80)括号内的运算结果是0x80,为真 这是因为==的优先级比&高,正确的逻辑是if ((dat&0x80)==0x80) |