C语言,printf中用%2d格式输出012为什么会得到10?

有以下程序

main( )

{ int x=102, y=012;

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

}

执行后输出结果是

A、10, 01

B、02, 12

C、102, 10

D、02,10

数值常量的书写格式是:

在C/C++中,0x、0X打头的是十六进制数,0打头的是八进制数

那么 

 int x = 102, y = 012;

与 

int x = 102, y = 10;

八进制数012转换为十进制是10。

完全等价。

所以代码输出的结果是:102,10,正确答案是C

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-03-20
012是八进制数,0打头的常量就是八进制。八进制的012就是十进制的10本回答被提问者采纳