我真的很新奇在C++中使用DWORD
来代替布尔值。因此,请原谅我的问题。使用C++中的dword检查多重布尔条件
我有一个enum
:
enum foo
{
foo1 = 0x0;
foo2 = 0x1
//....
}
DWORD foo;
我用这enum
检查多个条件:
if(somethinghappenstothisvariable)
{
foo|= foo1;
}
if(somethinghappenstosecondvariable)
{
foo|=foo2;
}
现在在另一个文件中我要检查各个变量的条件
if(foo &foo1)
{
//do something;
}
if(foo & foo2)
{
//do something;
}
我觉得如果两个条件都是true
,导致foo & foo2
仅为真,而foo & foo1
将不会像DWORD
的值将为1
那样,将值加起来为DWORD
。因此,我想知道是否有我可以检查个人DWORD
价值。
foo | = foo1; ==> foo | = 0 == foo,并且foo&foo1 == foo&0 ==> 0,我想你想要foo1 = 0x1(2^0),foo2 = 0x2(2^1),foo3 = 0x4 (2^2)... – willll
yup,foo1在当前实现中为零。最低的实际位是值“1”而不是“0”。 “0”不匹配任何位。每个位的值都需要是前一个值的两倍。 –
谢谢,它的工作。 – user1435077