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