给定一个无符号整数,我想知道是否有一种方法可以确定单个操作中是否设置了多个位。已经存在一种通过逐位检查(如下所示)来执行此操作的替代方法,但我想知道是否存在一种方法可以集体检查所有位。
typedef enum Foo_X
{
Foo_0 = 0x1,
Foo_1 = 0x2,
Foo_2 = 0x4,
Foo_3 = 0x8,
} Foo_X;
bool CheckFoo ( UINT Value, Foo_X Foo_to_Check )
{
if (Value & Foo_to_Check)
{
// Foo_to_Check is present
return true;
}
}
void main()
{
UINT value = GetValueFromSomewhere();
if (CheckFoo(value, Foo_0) && CheckFoo(value, Foo_3))
// both Foo_0 and Foo_3 are present
else
// not both present
}
下面也显示了使用集体方法的示例。有任何想法吗?TIA!
bool CheckFooTogether ( UINT Value, UINT Foos_to_Check )
{
// check value against Foos_to_Check collectively
}
void main()
{
UINT value = GetValueFromSomewhere();
if (CheckFooTogether (value, Foo_0 | Foo_3))
// both Foo_0 and Foo_3 are present
else
// not both present
}
(值&Foos_to_Check)== Foos_to_Check
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句