打印

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

[复制链接]
1367|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 | 只看该作者
不可能吧,

使用特权

评论回复
5
ayb_ice| | 2015-9-7 06:06 | 只看该作者
a是怎么定义的

使用特权

评论回复
6
chenyu988| | 2015-9-7 10:35 | 只看该作者
没理由啊

使用特权

评论回复
7
dirtwillfly| | 2015-9-7 12:19 | 只看该作者
看看汇编代码区别在哪里?

使用特权

评论回复
8
hnkf118| | 2015-9-7 12:33 | 只看该作者
一个是BOOL 比较 一个是数值比较 指令不一样的。肯定结果也会不一样。

使用特权

评论回复
9
sl3340| | 2015-9-7 15:47 | 只看该作者
不是高手,看看能不能强答,比较会提升数据类型,尤其是比较带符号的类型。

还有仅通过判断能不能的到结果而忽视过程是不严谨的。

使用特权

评论回复
10
李冬发| | 2015-9-7 16:50 | 只看该作者
C没有定义bool对应的int值,各有各的定义!

使用特权

评论回复
11
丁弋宇| | 2015-9-7 17:18 | 只看该作者
不可能吧

使用特权

评论回复
12
天风立马| | 2015-9-13 17:36 | 只看该作者
a是浮点数?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

11

帖子

0

粉丝