我想知道为什么二进制数不能与按位运算符一起使用?

//works
msgSize = (*(msgbody+1) & 0x80)?*(msgbody+5):*(msgbody+3);

//doesn't compile
msgSize = (*(msgbody+1) & 0b10000000)?*(msgbody+5):*(msgbody+3);

最佳答案

C不支持二进制文字。如果有的话,它们就是扩展。我建议您的编译器发出错误,因为它无法识别二进制文字0b10000000。因此,您的编译器也可能对此发出错误:

int main(void) {
    int msgSize = 0b10000000;
    return 0;
}


我建议使用0x801 << 7代替。

07-26 09:42