在c ++中,当你编写setprecision(12)时,12是10的基数,但当你像setprecision(012)那样写它时,它是一个八进制数,为什么?
答案 0 :(得分:12)
因为带前导零的常量(除了前导0x)总是八进制:
八进制整数文字(基数为八) 从数字0开始并包含 一系列八进制数字。
C ++草案标准(n1905)§2.13.1
它与setprecision没有任何关系。
答案 1 :(得分:5)
因为这是它在C中的工作方式。当设计C时,八进制数经常被使用,因此它们为它们添加了一个符号。目前,它很少有用,而且大多令人困惑。
答案 2 :(得分:3)
在C ++中,如果整数文字以0
数字开头(且0
后面没有x
),则以下数字被视为八进制数字。