繁体   English   中英

C ++ / WinAPI-从DWORD中删除标志(按位运算符?)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM