6

これは最初はばかげた/些細な質問のように見えるかもしれませんが、私がこれを行うと:

char f_gear = 15;

通常の出力が得られます

"☼"

しかし、私がそれを宣言するときにそれをゼロで埋めるとき:

char f_gear = 015;

奇妙な出力が表示され、テキストが文字化けして(1行で)見え、前の行が空白になります。個々のキャラクター自体を見ようとすると、次のようになります。

"  ◘◘@╧S☻ "

本質的に何が違うのですか?15 == 015ではないですか?

== EDIT ==質問を投稿したときに、StackOverflowによってテキストが変更されました。私が実際に見た出力は、いくつかの空白文字でした。

4

5 に答える 5

11

いいえ、015は8進数を表します。したがって、8進数の015は10進数の13に等しくなります。

それで、

char f_gear = 015;

と同等です

char f_gear = 13;
于 2013-02-22T04:56:08.413 に答える
7

015 は 8 進数表記です。ここでそれについて読むことができます: http://en.wikipedia.org/wiki/Octal . あまり使われていません。

于 2013-02-22T04:57:07.777 に答える
3

0 で始まる数値リテラルはすべて 8 進数です。

于 2013-02-22T04:59:00.870 に答える
1

例、「15」という数字を書くとします。コンパイラは、バイナリで 0000 1111 として認識します。

数値 015 を書き込むと、コンパイラはそれを 8 進数として認識し、2 進数で 0000 1101 として認識します。

于 2013-02-22T05:00:32.080 に答える
1

char f_gear=015 は 8 進数と見なされるため、char f_gear=13 と同等です。ASCII 13 は、結果の原因であるキャリッジ リターン用です。以下のスニペットは値を示していますここに画像の説明を入力

于 2013-02-22T05:10:17.600 に答える