【问题标题】:incorrect macro conversion to int when printing [duplicate]打印时将宏转换为 int 不正确 [重复]
【发布时间】:2019-05-13 01:35:12
【问题描述】:

所以我有以下代码:

#define x 010000

我的意图是将 x 定义为十进制的“10000”,但是当我打印出上述代码时,它会打印为 4096。 我不明白如何将其翻译为 4096。 谁能解释一下?

【问题讨论】:

  • 当你写int x = 0;时,你写的是一个八进制常量,而不是十进制常量(参见C11 §6.4.4.1 Integer constants)。零(后面不跟 xX — 或者,在某些圈子里,bB)表示八进制常数。
  • Darkfall,自从您成为会员近四年以来,如果您还没有真正阅读帮助内容,那么值得一试:stackoverflow.com/help,特别是为什么有些问题已关闭(stackoverflow.com/help/closed-questions)。这样,您将知道首先搜索该问题是否已被询问和回答,并且您不必浪费时间等待另一个答案,或者更有可能被关闭为重复 :-) 这顺便说一句,不是批评,我只是想帮助一个旅伴。
  • 是的,我知道这是一个愚蠢的问题,我应该在发布之前寻找过去的答案。对此感到抱歉。

标签: c octal


【解决方案1】:

以 0 开头的数字在 C 中被视为八进制。010000 是用八进制表示法编写的整数文字。它的值为8**4=4096。删除第一个 0。

【讨论】:

  • 啊!是的,当然,谢谢!
猜你喜欢
  • 2019-08-19
  • 2014-06-20
  • 2012-10-23
  • 2011-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
相关资源
最近更新 更多