例如,在 c++ 中,当您编写 setprecision (12) 时,12 是以 10 为底的,但是当您像 setprecision (012) 一样编写它时,它是一个八进制数,为什么?
问问题
231 次
3 回答
12
因为带前导零的常量(除了前导 0x)总是八进制:
八进制整数文字(以八为基数)以数字 0 开头,由一系列八进制数字组成。
C++ 标准草案 ( n1905 ) §2.13.1
它与setprecision完全无关。
于 2010-04-29T20:56:09.150 回答
5
因为这就是它在 C 中的工作方式。在设计 C 时,八进制数经常使用,因此他们为它们添加了符号。目前,它很少有帮助,而且大多令人困惑。
于 2010-04-29T20:57:07.290 回答
3
在 C++ 中,如果整数文字以0
数字开头(并且0
后面没有 a x
),则后面的数字被视为八进制数字。
于 2010-04-29T20:56:31.903 回答