我真的很想在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;
}
我认为|=
如果两个条件都为DWORD
,true
只会导致foo & foo2
为真,foo & foo1
会DWORD
不是1
的值DWORD
。因此,我想知道无论如何我可以检查个人my_modal.html
值。
答案 0 :(得分:1)
问题:1 =位0,0无效。 检查每个“条件”应该代表一个单独的位(位0 = 1,位1 = 2等)
所以 - 一个简单的改变:foo1 = 0x01; foo2 = 0x02;
应该修复它。
注意:任何其他检查应表示位值,而不是序数。
换句话说,foo3 = 0x04;
(不是0x03;
)
答案 1 :(得分:0)
通过轮班创建这些常量,可以使其更容易正确:
enum foo
{
foo1 = 1 << 0;
foo2 = 1 << 1;
foo3 = 1 << 2;
//....
}
通过这种方式,您可以确保每个掩码都设置了一个位。