【这个程序的运行结果是什么?】

来源:百度知道 编辑:UC知道 时间:2024/05/12 18:29:41
main()
{
int x=102,y=012;
printf("%2d,%2d\n",x,y);
}
我是初学者
我想结果应该是10,10
但是正确答案是102,10
不是限制了宽度为2了吗?怎么会冒出102的??
是不是正确答案有误,如果没错,请解释一下

限制了宽度%md形式中,当m大于数据的实际宽度时,计算机会在数据的左边补空格;当m小于等于数据的实际宽度时,按数据的实际宽度输出,如果是%-md的形式,则在数据的右边补空格.显然2小于数据的实际宽度,因此应该输出102.
我运行了的程序时对的!
运行程序为
#include<iostream>
main()
{
int x=102,y=012;
printf("%2d,%2d\n",x,y);
}

首先,int x=012;表示x是八进制数(在数字前加个0表示定义八进制数),在八进制里12=8+2=10。所以你看到了一个输出结果是10
其次,%md是如果这个数没有m位,则占m位的位子,如果超过m位则全部输出。

%2d在长度不到2时前面补0,达到了就原长度输出

%md形式 当m大于数据的实际宽度时,在数据的左边补空格;当m小于等于数据的实际宽度时,按数据的实际宽度输出,如果是%-md的形式,则在数据的右边补空格.显然2小于数据的实际宽度,因此应该输出102.

%2d是如果这个数没有两位,则占两位的位子,如果超过两位则全部输出.

答案错了 相信自己!