我真的很新奇在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