【问题标题】:what is the reason for the difference between setprecision (12) and setprecision (012) for example,in c++?例如,在 c++ 中,setprecision (12) 和 setprecision (012) 之间存在差异的原因是什么?
【发布时间】:2011-02-14 00:07:34
【问题描述】:

例如,在 c++ 中,当您编写 setprecision (12) 时,12 是以 10 为底的,但是当您将其编写为 setprecision (012) 时,它是一个八进制数,为什么?

【问题讨论】:

  • 因为在 C 和 C++ 中就是这样。没有其他答案。以0 开头的整型文字是八进制。

标签: c++ octal


【解决方案1】:

因为带有前导零的常量(除了前导 0x)总是八进制:

八进制整数文字(以八为底) 以数字 0 开头,包括 八进制数字的序列。

C++ 标准草案 (n1905) §2.13.1

它与 setprecision 一点关系都没有。

【讨论】:

  • @Ehsan:点击答案旁边的复选标记即可正式说出。
【解决方案2】:

因为这就是它在 C 中的工作方式。在设计 C 时,八进制数经常使用,因此他们为它们添加了符号。目前,它很少有用,而且大多令人困惑。

【讨论】:

    【解决方案3】:

    在 C++ 中,如果整数文字以 0 数字开头(并且 0 后面没有 x),则以下数字将被视为八进制数字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-29
      • 1970-01-01
      • 2020-04-05
      • 2023-02-10
      • 2021-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多