谁能解释一下为什么输出不像预期的那样?我原以为是16岁,结果得到了14岁。
#include<stdio.h>
int main()
{
int x=016;
printf("%d",x);
return 0;
}发布于 2017-08-05 12:57:23
以0开头的数字文字被解释为八进制数。
6.4.4.1整数常量
3.八进制常量由前缀0组成,可选地后跟数字0到7的序列。..。
例如016(8Base) ==> 0 x 8^2 + 1 x 8^1 + 6 x 8^0 ==> 0+8+6 ==> 14(10Base)
printf的%d以10为基数输出int的值,因此结果为14。
如果使用%o将int输出为八进制数,则会获得16。
E.g
int x = 016;
printf("%#o", x);//016如果您希望三位数结果包含使用%d的前导0,
printf("%03d", 16);//016格式字符串的详细信息请参考printf参考。
https://stackoverflow.com/questions/45518212
复制相似问题