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

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

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

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

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

octal-constant:

0
八进制常数 八进制数

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

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

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