たとえば、C ++ではsetprecision(12)を記述すると、12は10を底としますが、setprecision(012)のように記述すると、8進数になります。なぜですか。
3 に答える
12
先行ゼロ(先行0x以外)の定数は常に8進数であるため、次のようになります。
8進整数リテラル(基数8)は、数字0で始まり、8進数のシーケンスで構成されます。
C ++ドラフト標準(n1905)§2.13.1
setprecisionとはまったく関係ありません。
于 2010-04-29T20:56:09.150 に答える
5
それがCでの動作方法だったからです。Cが設計されたとき、8進数が頻繁に使用されていたので、それらに表記を付けました。現在、それが役立つことはめったになく、ほとんどの場合混乱を招きます。
于 2010-04-29T20:57:07.290 に答える
3
C ++では、整数リテラルが0
数字で始まる場合(および0
その後に)がないx
場合、後続の数字は8進数として扱われます。
于 2010-04-29T20:56:31.903 に答える