質問

次のコードフラグメント(c)は何を印刷しますか?

int a = 033;
printf("%d", a + 1);
役に立ちましたか?

解決

033 です オクタル整数文字通り そしてその価値はです 8*3+3 = 27. 。あなたのコードが印刷されます 28.

aから始まる整数文字通り 0 オクタルです。開始した場合 0x それは16進んです。

ちなみに、例のために

int x = 08; //error

それ以来、コンパイル時間エラーです 8 オクタル桁ではありません。

他のヒント

私は野生の推測を危険にさらし、言うでしょう 28 :)

28.

033は、先頭の「0」を備えているため、cのオクタル数であり、それは小数点でその値が27であることを意味するためです。

したがって、27 + 1 = 28

これがキューです:

  • 最初にゼロの3桁の3桁はオクタルです。
  • 最初の「0x」の2桁の値は16進数です。

この例を見てみてください:

 #include<stdio.h>
 main()
 {
 int a = 033;
 printf("\nin decimal: %d", a+1);
 printf("\nin hex: %x", a+1);
 printf("\nin octal: %o", a+1);
 }

これは次のとおりです。

in decimal: 28
in hex: 1c
in octal: 34
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top