printf("%2d,%2d\n",m,n);这个n输出的值是怎么计算的

#include <stdio.h>
int main()
{
int m=201,n=021;
printf("%2d,%2d\n",m,n);
return 0;
}
输出是 201,17
我想知道后面那个n是怎么计算的?

以0开头的数字认为是八进制,0x开头的数字认为是十六进制
021的八进制数转换为10进制,为2*8+1*1 = 17,所以最后输出的是17
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-19
C语言中,所有以0开头的数都默认为8进制数,
8进制的21就等于10进制的17.追问

谢谢。。。

追答

没事。

本回答被提问者采纳
第2个回答  2014-07-19
这里n的值021是8进制的,输出时%2d是十进制的,将八进制转化为十进制
相似回答