标题: C语言函数if语句问题 [打印本页]

作者: d8480    时间: 2020-3-27 19:44
标题: C语言函数if语句问题
2个函数为什么输出的结果不一样

无标题.png (7.67 KB, 下载次数: 31)

无标题.png

无标题1.png (6.94 KB, 下载次数: 23)

无标题1.png

作者: csmyldl    时间: 2020-3-27 21:58
判断式逻辑错误,因为if (dat&0x80==0x80)中括号内的运算结果是0x00为假
而if (dat&0x80)括号内的运算结果是0x80,为真
这是因为==的优先级比&高,正确的逻辑是if ((dat&0x80)==0x80)
作者: 余生不负    时间: 2020-3-28 00:14
if (dat&0x80)  &0x80判断是否为真,if ((dat&0x80)==0x80)    先&0x80的结果再判断等于 0x80不
作者: 5227    时间: 2020-3-28 10:05
条件判断是二值判断
作者: cjjdemon    时间: 2020-3-28 11:28
if (dat&0x80),这条语句永远为真,因为不论dat是什么值,&0x80后都不可能为0,所以else永远不会被执行

if ((dat&0x80)==0x80) ,是判断dat&0x80后,是否与0x80相等作为if判断执行条件,当dat=0或0x80,判断为真,执行P1=1; 其它值均执行else,P1=0
作者: 还有谁?    时间: 2020-3-28 13:24
跟if语句没关系,只同位运算有关,再补补课应该能整明白




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1