首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Int Datatype的C程序的意外输出

问Int Datatype的C程序的意外输出
EN

Stack Overflow用户
提问于 2017-08-05 12:30:38
回答 1查看 101关注 0票数 0

谁能解释一下为什么输出不像预期的那样?我原以为是16岁,结果得到了14岁。

代码语言:javascript
复制
#include<stdio.h>

int main()
{
    int x=016;
    printf("%d",x);
    return 0;
}
EN

回答 1

Stack Overflow用户

发布于 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

代码语言:javascript
复制
int x = 016;
printf("%#o", x);//016

如果您希望三位数结果包含使用%d的前导0,

代码语言:javascript
复制
printf("%03d", 16);//016

格式字符串的详细信息请参考printf参考。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45518212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档