打印

求两句话的差别

[复制链接]
3915|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
szn1423|  楼主 | 2012-12-11 10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写了一个if语句用来检测按键释放,P2.1口是按键,按下为低,释放为高。
但是第一句可用,第二句不可用。想不明白,求解释,多谢多谢。
if((key_value==3)&((P2IN&BIT1)!=0))
if((key_value==3)&((P2IN&BIT1)==1))

相关帖子

沙发
jiamingz| | 2012-12-11 10:29 | 只看该作者
&?还是&&?

使用特权

评论回复
板凳
ZG11211| | 2012-12-11 11:03 | 只看该作者
!=0的意思是只要不等于0,就是1~255都可以
==1就是只能等于1才可以,
这两句话肯定不一样的。

使用特权

评论回复
地板
hdl551890| | 2012-12-11 11:07 | 只看该作者
嗯  同意楼上的:$

使用特权

评论回复
5
望断云山| | 2012-12-11 11:15 | 只看该作者
估计被bit迷惑了,以为只能是 0和1

使用特权

评论回复
6
clinging| | 2012-12-11 11:29 | 只看该作者
按键释放后,P2IN&BIT1 不是1吧,应该是0x02

使用特权

评论回复
7
ayb_ice| | 2012-12-11 11:43 | 只看该作者
&&

使用特权

评论回复
8
szn1423|  楼主 | 2012-12-11 11:50 | 只看该作者
多谢楼上几位,我明白了。
&是按位运算符,运算结果不是只有0和1。
&&是逻辑运算符,运算结果只有真和假两种结果。
把第二句改为if((key_value==3)&&(P2IN&BIT1)) 也是可用的。

使用特权

评论回复
9
szn1423|  楼主 | 2012-12-11 11:55 | 只看该作者
明天结贴,再次感谢大家

使用特权

评论回复
10
小嘿| | 2012-12-11 12:12 | 只看该作者
不要在 & 两边放逻辑表达式,写这样的代码你会后悔的,出问题你自己都找不到

使用特权

评论回复
11
szn1423|  楼主 | 2012-12-11 15:17 | 只看该作者
小嘿 发表于 2012-12-11 12:12
不要在 & 两边放逻辑表达式,写这样的代码你会后悔的,出问题你自己都找不到 ...

请问为什么呢

使用特权

评论回复
12
lrpcb2012| | 2012-12-11 16:52 | 只看该作者
不懂

使用特权

评论回复
13
yirongfu| | 2012-12-11 17:38 | 只看该作者
一个是逻辑运算符,一个是位运算符,楼主要好好复习一下C语言基础了

使用特权

评论回复
14
uet_cache| | 2012-12-11 17:52 | 只看该作者
&是运算符,&&是逻辑判断符。楼主的语句有问题,就不用判断执行情况了。

使用特权

评论回复
15
qin552011373| | 2012-12-11 23:30 | 只看该作者
我也分的不太清楚  只是习惯性用&&  这次学习了

使用特权

评论回复
16
elec921| | 2012-12-12 08:27 | 只看该作者
不等于0,并不一定就一定等于1

使用特权

评论回复
17
hong7817| | 2012-12-12 09:01 | 只看该作者
clinging 发表于 2012-12-11 11:29
按键释放后,P2IN&BIT1 不是1吧,应该是0x02

同意此观点

使用特权

评论回复
18
refee| | 2012-12-12 15:23 | 只看该作者
哈哈 &和&&经常迷惑人 :lol

使用特权

评论回复
19
elitezhe| | 2012-12-12 16:33 | 只看该作者
目测 第二句==1的话 会认为这个1是0x01即BIT0 而这个if判断中有了 P2IN&BIT1,那么BIT0位必然永远是0,所有这个判断永远为假

使用特权

评论回复
20
janjo| | 2012-12-17 15:55 | 只看该作者
长知识了

使用特权

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

本版积分规则

251

主题

462

帖子

4

粉丝