[求助] 新手菜鸟问个c语言if语句的问题

grove_armweak   2019-11-14 20:58 楼主
新手刚刚接触单片机,入了个oled,看文档的时候,发现这么一段,if(IIC_Byte&0x80)  这里为什么可以这样写呢?  IIC_Byte&0x80==0x80 的话我能明白,不过安例子这样 两个字节按位与可以直接当if的判断式吗?
  • IMG_20191114_205323.jpg

回复评论 (8)

c语言运算结果是非零值就是真的。所以这么写,就是说一个字节里边最高位是否为1,为1最后条件判断为真,为零就是假,不成立。主要是使用了&操作符的特性。
点赞  2019-11-14 21:04
来判断前边的变量字节最高位是否为一
点赞  2019-11-14 21:05

IIC_Byte&0x80==0x80, 你这么写注意运算符优先级顺序,这样写是错误的,应该是(IIC_Byte&0x80)==0x80

点赞  2019-11-14 21:58

4楼大佬正解,if 判断的是 非0 与 0,即真与假,IIC_Byte&0x80的结果非0 ,则 if 条件就成立了,

我的小站 我的博客
点赞  2019-11-15 08:09
引用: lcofjp 发表于 2019-11-14 21:58
IIC_Byte&0x80==0x80, 你这么写注意运算符优先级顺序,这样写是错误的,应该是(IIC_Byte&0x80)==0x80
...

感谢大佬,明白了
点赞  2019-11-15 13:55
引用: wo4fisher 发表于 2019-11-14 21:04
c语言运算结果是非零值就是真的。所以这么写,就是说一个字节里边最高位是否为1,为1最后条件判断为真,为 ...

感谢大佬
点赞  2019-11-15 13:57
引用: hotsauce1861 发表于 2019-11-15 08:09
4楼大佬正解,if 判断的是 非0 与 0,即真与假,IIC_Byte&0x80的结果非0 ,则 if 条件就成立了,

谢谢大佬回复
点赞  2019-11-15 13:57
C語言中,針對邏輯的判斷,若為數值則"唯零為假、非零即真";這是我個人的理解,提供參考~
点赞  2019-11-16 06:53
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复