加入我们 登录
紫水晶编程技术论坛 - 努力打造成全国最好的编程论坛 返回首页

Tesla.Angela http://www.m5home.com/bbs/?4158 [收藏] [复制] [分享] [RSS] 空间短域名:ta.m5home.com

日志

一些位操作的宏和DEMO

已有 595 次阅读2017-7-29 23:39

#define SETBIT(x,y) x|=(1<<y)      //将X的第Y位置1
#define CLRBIT(x,y) x&=~(1<<y)     //将X的第Y位清0
#define GETBIT(x,y) (x & (1 << y)) //取X的第Y位,返回0或非0

flag |= value;  //设置位标志
flag &= ~value; //取消位标志

if((flag & value) == value){...} //判断标志位

为什么不建议使用
if(flag & value){...}判断?请看例子:
#define 左键按下 0x1
#define 右键按下 0x2
#define 双键按下 (左键按下 | 右键按下)
如果只是用:if(按键 & 双键按下),那么当『
按键==左键按下』时,此条判断也会成立。
因此,必须使用:
if((按键 & 双键按下)==双键按下)。

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 加入我们

手机版|Archiver|紫水晶工作室 ( 粤ICP备05020336号 )

GMT+8, 2019-11-13 00:59 , Processed in 0.021282 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

返回顶部