我无法理解下面提到的程序的输出 -
#include <stdio.h>
int main()
{
int i, a[8]={000, 001, 010, 011, 100, 101, 110, 111};
for(i=0;i<8;i++)
{
printf("%d\t",a[i]);
}
system("pause");
return 0;
}
输出 -
0 1 8 9 100 101 110 111
为什么最初的四个值会在这里转换?
答案 0 :(得分:4)
任何以0
后跟其他数字开头的整数文字都是八进制的,就像任何以0x
或0X
开头的整数文字一样,后跟数字,是十六进制的。 C ++ 14将添加0b
或0B
作为二进制整数文字的前缀。
有关integer literals in C++ here的更多信息,请参阅
答案 1 :(得分:2)
如果您使用0
开始编号,则会将其转换为八进制数
0xNumber是十六进制