为什么C编译器不会';你不接受这个有条件的任务吗?
我想知道为什么二进制数不能与位运算符一起使用为什么C编译器不会';你不接受这个有条件的任务吗?,c,iar,C,Iar,我想知道为什么二进制数不能与位运算符一起使用 //works msgSize = (*(msgbody+1) & 0x80)?*(msgbody+5):*(msgbody+3); //doesn't compile msgSize = (*(msgbody+1) & 0b10000000)?*(msgbody+5):*(msgbody+3); C语言不支持二进制文字;如果它们可用,它们就是一个扩展。我建议您的编译器发出错误,因为它无法识别二进制文本0b10000000。因
//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我想您是在用gcc编程。。。C没有二进制文本。@modifiablelvalue您是第一个:)我正在使用IAR(不确定它使用什么编译器)。二进制文字与ObjC.unrelated的叮当设置配合得很好。SSCCE可能看起来像。正如您从我的SSCCE中看到的,C中没有二进制文字。请将其作为答案。我会记下来的。我的错误代码看起来不同。我猜IAR不是基于GCC的。可能是