首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >十国的权力

十国的权力
EN

Stack Overflow用户
提问于 2014-08-08 17:10:09
回答 2查看 251关注 0票数 1
代码语言:javascript
复制
  #include <stdio.h>
  #include <stdlib.h>

  #define SIZEOF(arr) (sizeof(arr) / sizeof(arr[0]))
  #define PrintInt(expr) printf("%s:%d\n",#expr,(expr))

  int main()
  {
      /* The powers of 10 */
      int pot[] = {
          0001,
          0010,
          0100,
          1000
      };
      int i;

      for(i=0;i<SIZEOF(pot);i++)
          PrintInt(pot[i]);
      return 0;
  }

以下代码的输出为

波蒂:1 波蒂:8 波蒂:64 波蒂:1000

为什么会有这样的输出?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-08 17:13:12

在C中以0位为前缀的数字文字将在八进制中输出,这是一个基本的8位数字系统。

10月(1)=12月(1)

10月(10)=12月(8)

10月(100)=12月(64)

你的数字就是从这里来的。

FYI,十六进制文字以0x为前缀,二进制文字以0b (IIRC)为前缀。

编辑:要真正回答你的问题,只需从数字中去掉前导零,它就会给你想要的输出。

票数 9
EN

Stack Overflow用户

发布于 2014-08-08 17:13:22

以零开头的数字文字被解释为八进制-基数8。所以前三个数字是八进制1,10和100 (基- 10是1,8和64 );最后一个数字是基数10。

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

https://stackoverflow.com/questions/25208682

复制
相关文章

相似问题

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