找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1560|回复: 5
收起左侧

C语言函数if语句问题

[复制链接]
ID:707762 发表于 2020-3-27 19:44 | 显示全部楼层 |阅读模式
2个函数为什么输出的结果不一样
无标题.png
无标题1.png
回复

使用道具 举报

ID:235200 发表于 2020-3-27 21:58 | 显示全部楼层
判断式逻辑错误,因为if (dat&0x80==0x80)中括号内的运算结果是0x00为假
而if (dat&0x80)括号内的运算结果是0x80,为真
这是因为==的优先级比&高,正确的逻辑是if ((dat&0x80)==0x80)
回复

使用道具 举报

ID:316880 发表于 2020-3-28 00:14 | 显示全部楼层
if (dat&0x80)  &0x80判断是否为真,if ((dat&0x80)==0x80)    先&0x80的结果再判断等于 0x80不
回复

使用道具 举报

ID:715816 发表于 2020-3-28 10:05 | 显示全部楼层
条件判断是二值判断
回复

使用道具 举报

ID:612392 发表于 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
回复

使用道具 举报

ID:475247 发表于 2020-3-28 13:24 | 显示全部楼层
跟if语句没关系,只同位运算有关,再补补课应该能整明白
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表