无法理解此c程序的结果

时间:2014-01-04 05:47:56

标签: c binary

#include<stdio.h>
void main(){
  int i;
  i = 011;
  printf("%d",i);
}

这个程序输出为9.我不知道原因。请帮我弄清楚这个程序给出这个输出的原因。

3 个答案:

答案 0 :(得分:7)

在C中,您可以通过以下方式表示值9:

  • 十六进制(Base 16): 0x9
  • 十进制(基数为10): 9
  • 八进制(基数为8): 011

答案 1 :(得分:5)

在C / C ++ / Java中,十六进制数字以0x开头。八进制数以0开头。

0119

的八进制

答案 2 :(得分:1)

011是八进制数,因为它前面有0

011 = 1*(8^1) + 1*(8^0)
    = 1*8 + 1*1
    = 8 +1
    = 9 in decimal(%d)

十六进制为0x,十进制只有数字(即9)