&运算符处理十进制数的二进制格式。所以10 & 9 = 8
因为
1010 (10)
1001 (9)
=====
1000 (8)
前一个例子运行正常。但是当我尝试010 & 010
时,我希望结果为10.但是我得到8.有人可以向我解释为什么会这样吗?
答案 0 :(得分:2)
因为以0
开头的数字被视为八进制,而不是二进制。
10
被视为十进制,因为它是默认值。因此,10 & 9 = 8
测试以十进制形式解析。
当它以0
开头时,它被视为八进制。所以010 & 010
以八进制解析,如(十进制):8 & 8
。
0x
被视为十六进制。
正如Oli Charlesworth
和delnan
向我指出的那样,二进制没有C标准,尽管有些编译器(例如GCC)将0b
视为二进制表示。