Bra*_*ler 1 c++ winapi flags dword bit-manipulation
我现在知道如何使用按位&AND运算符检查DWORD(特别是Windows样式)中是否存在某个标志.我该怎么做:
if (dwMyFlags & dwSomeFlag) {
// dwMyFlags contains dwSomeFlag
// ->> How do I remove dwSomeFlag from dwMyFlags?
}
Run Code Online (Sandbox Code Playgroud)
我知道减去它是行不通的,是否有一些运算符可以从DWORD中删除标志?
如果您知道该标志已设置,您可以使用独占或取消设置:
dwMyFlags ^= dwSomeFlag;
Run Code Online (Sandbox Code Playgroud)
如果你不确定标志的状态,你需要使用按位&,而不是按位〜
dwMyFlags &= ~dwSomeFlag;
Run Code Online (Sandbox Code Playgroud)
&用你想要的标志的倒数做一点点:
dwMyFlags = dwMyFlags & ~dwSomeFlag;
Run Code Online (Sandbox Code Playgroud)
您可以使用&=以下缩写:
dwMyFlags &= ~dwSomeFlag;
Run Code Online (Sandbox Code Playgroud)
AND与不属于该标志的位:
dwMyFlags &= ~dwSomeFlag;
Run Code Online (Sandbox Code Playgroud)
这可以扩展为删除多个标志:
dwMyFlags &= ~(dwSomeFlag | dwSomeOtherFlag);
Run Code Online (Sandbox Code Playgroud)
此外,匈牙利的表示法已经过时了.
| 归档时间: |
|
| 查看次数: |
1939 次 |
| 最近记录: |