在c ++中使用dword检查多个布尔条件

时间:2017-03-16 17:44:46

标签: c++ enums 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;
}

我认为|=如果两个条件都为DWORDtrue只会导致foo & foo2为真,foo & foo1DWORD不是1的值DWORD。因此,我想知道无论如何我可以检查个人my_modal.html值。

2 个答案:

答案 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;
  //....
}

通过这种方式,您可以确保每个掩码都设置了一个位。