在学习MFC源码时经常会有:
if
(style
&
CS_TYPE)
{
//
执行
}
问:那么if(style
&
CS_TYPE)有何实际意义那?
答:当style是由CS_TYPE类型系列(CS_TYPE系列类型转换为二进制只有一位为1)位于运算计算结果,则if(style
&
CS_TYPE)判断是style是否含有CS_TYPE类型
例如:
#define
CS_TYPE 0x0008
//
= 0000 1000//即只有一位二进制数据为1
#define
CS_HIDE 0x0010
//
= 0001 0000
#define
CS_SHOW 0x0020
//
= 0010 0000
DWORD style
=
CS_TYPE
|
CS_HIDE;
if
(style
&
CS_TYPE);
//
true
if
(style
&
CS_HIDE);
//
true
if
(style
&
CS_SHOW);
//
false
----------------------------------------------------------------------------
//
有则剔除无则包含
style
|=
CS_SHOW;
//
此时style含有CS_SHOW(之前没有用CS_SHOW做过按位与运算) 等效于 DWORD style = CS_TYPE | CS_HIDE | CS_SHOW;
if
(style
&
CS_SHOW);
//
true
style
|=
CS_TYPE;
//
剔除CS_TYPE属性(之前用CS_TYPE做过按位与运算)
if
(style
&
CS_TYPE);
//
false
转载于:https://www.cnblogs.com/cnarg/archive/2011/02/20/1958843.html