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

Rit*_*Dey -1 c int decimal octal

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

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

void main()
{
    int x = 070;
    printf("%d", x);
    getch();
}
Run Code Online (Sandbox Code Playgroud)

Sou*_*osh 16

以...开头的任何整数文字(整数常量)0都是八进制表示.

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

octal-constant:

 0
八进制常数 八进制数

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

d,iint参数转换为有符号的十进制 [...]

因此,八进制70 ==十进制56.