2

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

4

3 回答 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 回答