我想知道为什么二进制数不能与按位运算符一起使用?
//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;
}
我建议使用
0x80
或1 << 7
代替。