求两句话的差别

[复制链接]
 楼主| 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 | 显示全部楼层
嗯  同意楼上的:$
望断云山 发表于 2012-12-11 11:15 | 显示全部楼层
估计被bit迷惑了,以为只能是 0和1
clinging 发表于 2012-12-11 11:29 | 显示全部楼层
按键释放后,P2IN&BIT1 不是1吧,应该是0x02
ayb_ice 发表于 2012-12-11 11:43 | 显示全部楼层
 楼主| szn1423 发表于 2012-12-11 11:50 | 显示全部楼层
多谢楼上几位,我明白了。
&是按位运算符,运算结果不是只有0和1。
&&是逻辑运算符,运算结果只有真和假两种结果。
把第二句改为if((key_value==3)&&(P2IN&BIT1)) 也是可用的。
 楼主| szn1423 发表于 2012-12-11 11:55 | 显示全部楼层
明天结贴,再次感谢大家
小嘿 发表于 2012-12-11 12:12 | 显示全部楼层
不要在 & 两边放逻辑表达式,写这样的代码你会后悔的,出问题你自己都找不到
 楼主| szn1423 发表于 2012-12-11 15:17 | 显示全部楼层
小嘿 发表于 2012-12-11 12:12
不要在 & 两边放逻辑表达式,写这样的代码你会后悔的,出问题你自己都找不到 ...

请问为什么呢
lrpcb2012 发表于 2012-12-11 16:52 | 显示全部楼层
不懂
yirongfu 发表于 2012-12-11 17:38 | 显示全部楼层
一个是逻辑运算符,一个是位运算符,楼主要好好复习一下C语言基础了
uet_cache 发表于 2012-12-11 17:52 | 显示全部楼层
&是运算符,&&是逻辑判断符。楼主的语句有问题,就不用判断执行情况了。
qin552011373 发表于 2012-12-11 23:30 | 显示全部楼层
我也分的不太清楚  只是习惯性用&&  这次学习了
elec921 发表于 2012-12-12 08:27 | 显示全部楼层
不等于0,并不一定就一定等于1
hong7817 发表于 2012-12-12 09:01 | 显示全部楼层
clinging 发表于 2012-12-11 11:29
按键释放后,P2IN&BIT1 不是1吧,应该是0x02

同意此观点
refee 发表于 2012-12-12 15:23 | 显示全部楼层
哈哈 &和&&经常迷惑人 :lol
elitezhe 发表于 2012-12-12 16:33 | 显示全部楼层
目测 第二句==1的话 会认为这个1是0x01即BIT0 而这个if判断中有了 P2IN&BIT1,那么BIT0位必然永远是0,所有这个判断永远为假
janjo 发表于 2012-12-17 15:55 | 显示全部楼层
长知识了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

251

主题

462

帖子

4

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