c语言,请解决,刚学不久

以下
程序
#
include
<
stdio.h

void
main()
int
x
=
102
,y=012
;
printf
{
"
%
2d
,
%
2dn"
,
x
,
y
)
;
为什么结果x是102,而y是10

以0开头的数字序列代表八进制。y=012:这里y是八进制的。
%2d表示输出的变量列宽为2的十进制。八进制012等于十进制10

printf里面打印格式%2d是以十进制的格式打印。
x=102
y=012,0前缀表示八进制,转换成十进制就是10。
例如把y=020按照%2d十进制打印出来就是16