作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我发现一些遗留代码在设置文件属性时出错。它看起来像这样 -
flag1 = 0x0001;
flag2 = 0x0002;
DWORD flags = flag1 | flag2;
//great - flags is 3
DWORD prevValue = 0x0010; //say
//add our new flags to prevValue
DWORD newVal = prevValue | flags;
//newVal is 19
//but now I want to remove those flags from newVal
DWORD backToPrev = newVal & !flags;
//but according to my compiler (vs2012)
//!flags is 0, it can't do the logical NOT on the DWORD
ASSERT (backToPrev); // it's 0, should be 16
有什么修复建议吗?
最佳答案
!
运算符是逻辑 NOT。该运算符的结果是 0 或 1。您想要的是按位 NOT 运算符 ~
:
DWORD backToPrev = newVal & ~flags;
关于c - bool 代数 NOT 和 DWORD - 建议修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47909646/
我是一名优秀的程序员,十分优秀!