MFC学习记录(位操作)类型判断 D

  在学习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/p/1958843.html