gcc 4.7.2
c89
你好,比較位運算符
enum message_e {
SIP_CONNECTED = 1 << 0,
CALL_ACCEPTED = 1 << 1
};
設置在我的代碼不同部分的位:
channel->base.message |= CALL_ACCEPTED;
channel->base.message |= SIP_CONNECTED;
後來我想檢查,以確保這兩個位設置:
if((channel->base.message & SIP_CONNECTED) && (channel->base.message & CALL_ACCEPTED)) {
/* IF BOTH BITS ARE SET CALL_ACCEPTED and SIP_CONNECTED */
}
我只希望落空if語句如果只有這些位被設置。如果設置了CALL_ACCEPTED並且SIP_CONNECTED不是,反之亦然。
然而,似乎通過,如果只有其中一個被設置爲落入if語句。
非常感謝您的任何建議,
這些定義的值是什麼? – cnicutar 2013-03-28 09:40:09
無論您的程序出現什麼問題,都不在您發佈的代碼中。 – 2013-03-28 09:40:41
假設這些是不重複的不同位集,這個代碼是正確的。這些口罩的價值是什麼? – WhozCraig 2013-03-28 09:41:17