我已經定義了一個枚舉這樣的:位與在C++
enum blStatus {
Class1 = 0x40, /* 0000,0100,0000 */
Class2 = 0x80, /* 0000,1000,0000 */
Class3 = 0x100, /* 0001,0000,0000 */
Class4 = 0x200 /* 0010,0000,0000 */
}
現在,某個地方的代碼我有:
if (status &= Class1)
++c1;
else if (status &= Class2)
++c2;
else if (status &= Class3)
++c3;
else if (status &= Class4)
++c4;
假設,狀態帽子這個值:
status = 143 /* 0000,1000,1111 */
調試時,沒有任何條件是真實的。然而 「狀態& =等級2」 是:
0000,1000,1111 & 0000,1000,0000 = 0000,1000,0000
和C2計數器必須遞增。但在調試時,所有條件都被傳遞(忽略)並且沒有計數器增量。爲什麼?