为什么y在输出时为10,原理是什么?

各位大佬,求问y为什么输出为10,求原理。

#include
int main()

{

int x=102,y=012;

printf("%2d,%2d",x,y);

}

如果问题得到解决,请点我回答左上角的采纳,谢谢

在C语言里,如果是 y = 012,0开头,会被当作8进制。类似地,如果y = 0x12,则被当作16进制。
8进制的12,也就是8x1+2=10
如果是0x12,就是16x1+2=18了。

打印时用字母o和%表示,即o%表示八进制,定义的时候用数字0开头表示八进制。1*8+2=10