[英]C++/WinAPI - Removing a flag from a DWORD (bitwise operator?)
我现在知道如何使用按位&
AND运算符检查DWORD(特别是Windows样式)中是否存在某些标志。 我该怎么做:
if (dwMyFlags & dwSomeFlag) {
// dwMyFlags contains dwSomeFlag
// ->> How do I remove dwSomeFlag from dwMyFlags?
}
我知道减去它是行不通的,是否有一些运算符可以从DWORD中删除标志?
如果您知道该标志已设置,则可以使用独占或取消设置:
dwMyFlags ^= dwSomeFlag;
如果不确定标志的状态,则需要使用按位&,而不是按位〜
dwMyFlags &= ~dwSomeFlag;
用所需的标志的反位进行按位&
运算:
dwMyFlags = dwMyFlags & ~dwSomeFlag;
您可以使用&=
对此进行缩写:
dwMyFlags &= ~dwSomeFlag;
与那些不属于该标志的位:
dwMyFlags &= ~dwSomeFlag;
这也可以扩展为删除多个标志:
dwMyFlags &= ~(dwSomeFlag | dwSomeOtherFlag);
同样,匈牙利符号的使用已经过期。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.