例如,在c ++中,setprecision(12)和setprecision(012)之间的区别是什么原因?

时间:2010-04-29 20:54:32

标签: c++ octal

在c ++中,当你编写setprecision(12)时,12是10的基数,但当你像setprecision(012)那样写它时,它是一个八进制数,为什么?

3 个答案:

答案 0 :(得分:12)

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

  

八进制整数文字(基数为八)   从数字0开始并包含   一系列八进制数字。

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

它与setprecision没有任何关系。

答案 1 :(得分:5)

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

答案 2 :(得分:3)

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