邻溴苯甲酸硝化:问一个C语言的小程序

来源:百度文库 编辑:中科新闻网 时间:2024/04/30 13:21:45
??main( )
??{
?? int x=102,y=012;
?? printf(“%2d,%2d\n”,x,y);
??}
??执行后输出结果是
102,10

为什么会这样?详细.

012机器认为是8进制的.所以是8+2=10;而printf(“%2d,%2d\n”,x,y);中的2是控制输出所占的字符位数的,当输出的位数>这个2时,这个2就失去了意义,输出就按正常输出.而当输出的位数小于这个2时,结果的前面用空格补足.

因为y=012,是以0开头,是8进制的,
而输出格式为%2d,为10进制,所以应该将它转化为10进制的,即012=1*8+2*1=10。所以输出为10。

以0开头计算机认为是八进制。

因为012这个数机器默认的是八进制 而输出的%d默认的是十进制 所以你输出的时候会自动把你的012转换成十进制也就是10

在定义x,y时,将整型int 改为 长整型long
因为:“%2d”中的2是定义长整型用的
如:printf(“%5.3d\n”,42);
输出结果: __042 前空2格。

012计算机把它认为是8进制的了