int n = 00000011;
printf("n is: %d\n", n);
x是:9
不应该是十进制的3吗?
答案 0 :(得分:4)
00000011
是9
的八进制值,不能直接使用二进制表示。
Octal 011 -> Decimal 9
只能指定十进制,八进制和十六进制表示,对于十进制表示,它是直接的,对于八进制表示,您在值前加0
,因此09
无效,并且对于十六进制表示,您在值前加0x
。
注意:由 abligh 评论,您可以将0b
前缀与gcc
和clang
以及其他编译器一起使用
答案 1 :(得分:0)
在c编号中,以0 * digit *开头的文字是base-8。 对于二进制文件,一些编译器允许您使用0b启动它们。 否则你必须手动将它们转换为十六进制或八进制。
#include <stdio.h>
int main(void){
int n=0b00000011;
printf ("n is %d\n",n);
return 0;
};