&
我现在知道如何使用按位AND 运算符检查 DWORD(特别是 Windows 样式)中是否存在某个标志。我该怎么做:
if (dwMyFlags & dwSomeFlag) {
// dwMyFlags contains dwSomeFlag
// ->> How do I remove dwSomeFlag from dwMyFlags?
}
我知道减去它是行不通的,是否有一些运算符可以从 DWORD 中删除标志?
&
我现在知道如何使用按位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);
此外,匈牙利符号已经过时了。