在 c++ 中使用 dword 检查多个布尔条件
Check Multiple boolean condition using dword in c++
我真的很陌生,在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
,|=
DWORD
的值相加,这导致foo & foo2
只为真,而foo & foo1
则不会,因为DWORD
的值将1
。因此,我想知道是否有任何我可以检查个人DWORD
值。
问题:1 = 位 0,0 无效。检查每个"条件"应代表一个单独的位(位 0 = 1,位 1 = 2,等等(
所以 - 一个简单的更改:foo1 = 0x01; foo2 = 0x02;
应该修复它。注意:任何其他检查都应表示位值,而不是序号。换句话说,foo3 = 0x04;
(不是0x03;
(
您可以通过创建具有移位的这些常量来使其更容易更正:
enum foo
{
foo1 = 1 << 0;
foo2 = 1 << 1;
foo3 = 1 << 2;
//....
}
这样,您可以确保每个掩码都设置了一个位。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 在没有太多条件句的情况下,我如何避免被零除
- 如何编写一个使用n倍三元条件语句的C++布尔函数
- const_cast 与布尔值:如果条件被忽略
- 在 c++ 中使用 dword 检查多个布尔条件
- C 为什么在满足布尔条件后,我的DO-while循环就无法结束
- 字符串和布尔值(Int 条件为假)C++
- 当只有一个线程写入 c++ 中的布尔变量时,是否存在争用条件
- 布尔值和条件模板的大小
- placeNumbers应该返回数字的顺序,以便满足布尔值向量中编码的条件
- 是条件表达式C++总是布尔类型
- 内部评估的布尔条件以获得循环性能
- 使用布尔条件c++循环时无法退出
- 布尔变量用于循环和条件
- 基于布尔条件的模板特化
- 在c++中以布尔值作为条件执行while
- gcc 或其他编译器在条件表达式中使用时是否会自动将按位 or 转换为布尔值 or?
- 在if语句的条件块中调用布尔方法
- 在预处理条件中使用布尔字面值是否有效?
- 在不带布尔条件的Update()中调用一次