2

我正在做一个项目,我们在一个字节中跟踪标志。

可以使用几个选项设置该字节。例如:

0x00000001 - Person
0x00000002 - Object
0x00000003 - Vehicle

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

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

问题是,我想知道如何检查它是否不是一个人。如果这是一个简单的答案,请原谅我,但我已经尝试过 if !flags&0x00000001 并且它没有检查出来。我也尝试将其与 0 进行比较,但仍然没有运气。

4

2 回答 2

8

你走近了。operator!优先级高于operator&,因此需要括号:

if (!(flags & 0x00000001)) {
    //this is not a person
}
于 2013-04-07T05:11:19.070 回答
2

运算符“!”的优先级 高于运算符 '&',因此请改用 !(flags&0x1)。

PS:0x3不能呈现Vehicle,但是呈现的是Person和Object。使用 0x4 表示车辆。

于 2013-04-07T05:13:28.390 回答