为什么整数转换为八进制数?

时间:2013-11-24 17:56:38

标签: c++ c

我无法理解下面提到的程序的输出 -

#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

为什么最初的四个值会在这里转换?

2 个答案:

答案 0 :(得分:4)

任何以0后跟其他数字开头的整数文字都是八进制的,就像任何以0x0X开头的整数文字一样,后跟数字,是十六进制的。 C ++ 14将添加0b0B作为二进制整数文字的前缀。

有关integer literals in C++ here的更多信息,请参阅

答案 1 :(得分:2)

如果您使用0开始编号,则会将其转换为八进制数

0xNumber是十六进制