C++ - 如何检查是否与&运算符不相等

Pla*_*oks 1 c++ bit-manipulation

我正在研究一个项目,我们在一个字节中跟踪标志.

该字节可以通过几个选项进行设置.例如:

0x00000001 - Person
0x00000002 - Object
0x00000003 - Vehicle
Run Code Online (Sandbox Code Playgroud)

现在,当需要检查这些对象时,我们可以这样做:

if(flags&0x00000001){//这是一个人}

问题是,我想知道如何检查并查看它是否不是一个人.原谅我,如果这是一个简单的答案,但我已经尝试过!flags&0x00000001并且它不会检出.我也试过把它比作0,但仍然没有运气.

chr*_*ris 8

你走近了.operator!具有较高的优先级operator&,所以你需要括号:

if (!(flags & 0x00000001)) {
    //this is not a person
}
Run Code Online (Sandbox Code Playgroud)