总遇到一个问题 if( !(a&4) )貌似和if( (a&4)==0 ) 不等价?

[复制链接]
1708|11
 楼主| hujie119120 发表于 2015-9-6 20:54 | 显示全部楼层 |阅读模式
调试单片机程序 用KEIL4环境 发现 if( !(a&4) )和if( (a&4)==0 ) 不能等价互用,用if( !(a&4) )得不到正确的结果,不知道为什么。恳请高手解答
hwk612167 发表于 2015-9-6 20:57 | 显示全部楼层
看对应的汇编语句有何差异
 楼主| hujie119120 发表于 2015-9-6 21:09 | 显示全部楼层
奥 那可以用C语言的规则来解释吗
ayb_ice 发表于 2015-9-7 06:05 来自手机 | 显示全部楼层
不可能吧,
ayb_ice 发表于 2015-9-7 06:06 来自手机 | 显示全部楼层
a是怎么定义的
chenyu988 发表于 2015-9-7 10:35 | 显示全部楼层
没理由啊
dirtwillfly 发表于 2015-9-7 12:19 | 显示全部楼层
看看汇编代码区别在哪里?
hnkf118 发表于 2015-9-7 12:33 | 显示全部楼层
一个是BOOL 比较 一个是数值比较 指令不一样的。肯定结果也会不一样。
sl3340 发表于 2015-9-7 15:47 | 显示全部楼层
不是高手,看看能不能强答,比较会提升数据类型,尤其是比较带符号的类型。

还有仅通过判断能不能的到结果而忽视过程是不严谨的。
李冬发 发表于 2015-9-7 16:50 | 显示全部楼层
C没有定义bool对应的int值,各有各的定义!
丁弋宇 发表于 2015-9-7 17:18 | 显示全部楼层
不可能吧
天风立马 发表于 2015-9-13 17:36 | 显示全部楼层
a是浮点数?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

11

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部