为什么在C程序中int 070的输出是56?

时间:2016-04-15 14:33:10

标签: c int decimal octal

你可以解释一下吗?为什么它给出了56个值作为输出?

#include <stdio.h> 
#include <conio.h>

void main()
{
    int x = 070;
    printf("%d", x);
    getch();
}

1 个答案:

答案 0 :(得分:16)

0开头的任何整数文字(整数常量)都是octal representation

引用C11,章节§6.4.4.1,整数常量

  

octal-constant:

     

0
  八进制常量 八进制数

  

八进制数字

之一
  0 1 2 3 4 5 6 7

,并根据章节§7.21.6.1,%d格式说明符printf(),(强调我的

  

d,i int参数转换为带符号十进制 [...]

因此,octal 70 == decimal 56