int x=102,y=012;printf("%2d,%2d",x,y);输出结果为 为什么

大于m,则按实际位数输出。那为什么scanf("%2d,%c",&a,&b)输入1345ABC输出是12,345ABC

结果为:102,10
原因:定义y时,是用八进制定义的,也就是在那个0就是告诉计算机12是用八进制,十六进制的是0x。而你输出y的时候是用十进制输出,八进制的12就是十进制的10。
而"%2d,%2d"的用法是:%md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
温馨提示:内容为网友见解,仅供参考
无其他回答

intx=102,y=012 printf("%2d,%2d,"x,y). 输出结果是?
输出为 102,12 2d表示输出整数,宽度2位,对于整数如果设定宽度小于实际宽度按实际宽度输出。

int x=102,y=012;printf("%2d,%2d",x,y);输出结果为 为什么 是102...
int x=102,y=012;\/\/012是8进制,换算成10进制是10 printf("%2d,%2d",x,y);\/\/按2位宽度输出,102是三位,大于2位,按实际宽度输出

...{ int x=102,y=012; printf("%2d,%d\\n",x,y); } 执行后输出的结果是...
int x=102,y=012; 说明x为十进制数102,而y以0开头,为8进制数(换成10进制数为10)。printf("%2d,%d\\n",x,y);x时机位数为3,大于%2d中的2,则按照十进制数输出为102。而y按一般十进制数输出为10. 希望对你有帮助,有问题可以再问我。运行过后结果为:...

main() { int x=101,y=012; prentf("%2d,%2d\\n",x,y); } 请问大侠该题...
解释:printf("%2d,%2d\\n",x,y);第一个%2d控制x值的输出。表示x的值按十进制输出,输出结果占两位。因为x的值为101,101的数据宽度为3(>2)。所以输出的时候,按x的实际宽度输出。即输出x的值为101。第二个%2d控制y值的输出。含义同上面。这里的不同在于,y的初始值为012。012是一个八...

C语言,printf中用%2d格式输出012为什么会得到10?
数值常量的书写格式是:在C\/C++中,0x、0X打头的是十六进制数,0打头的是八进制数。那么 int x = 102, y = 012;与 int x = 102, y = 10;八进制数012转换为十进制是10。完全等价。所以代码输出的结果是:102,10,正确答案是C。

c语言 控制输出 不懂结果为什么是102和10?
printf("%2d,%2d\\n",x,y);等于printf("%2d,%2d\\n",102,012);第二个参数是8进制,printf自动转换了!所以结果是 102,10

c语言题目,求解惑
2d是C语言中printf函数的输出格式说明符。具体解释如下:使输出的int型的数值以2位的固定位宽输出。如果不足2位,则在前面补空格;如果超过2位,则按实际位数输出。注:如果输出的数值不是int型,则进行强制类型转换为int,之后按上面的格式输出。举例如下:printf("%2d", 12); \/\/ 输出12 printf...

这是一个C语言结果问题 求高手
0打头的数字会被当作8进制数看待,012是8进制数,转换为10进制就是10。

C语言的问题~~~
首先,如果直接就这么写,结果是报错;修改后,第一个是102,10 第二个是12.345000 第三个是400,400

求一些c编程题
32、若已定义x和y为double类型,则表达式:x=1,y=x+3\/2的值是 A)1 B)2 C)2、0 D)2、5、C、1 33、若有定义:int a=8,b=5,c;,执行语句c=a\/b+0、4;后,c的值为 A) 1、4 B) 1 C) 2、0 D) 2、B、1 34、若有定义:int x,y;char a,b,c;并有以下输入数据(此处< CR> 代表换行...

相似回答