3

次のコードフラグメント(C)は何を出力しますか?

int a = 033;
printf("%d", a + 1);
4

4 に答える 4

6

0338進整数リテラルであり、その値は8*3+3 = 27です。コードが出力され28ます。

aで始まる整数リテラル0は8進数です。0xそれが16進数で始まる場合。

ちなみに、例として

int x = 08; //error

8は8進数ではないため、コンパイル時エラーです。

于 2010-12-07T13:56:36.493 に答える
0

私は大げさな推測の危険を冒して言うでしょう28:)

于 2010-12-07T13:56:32.423 に答える
0

28。

033はCの8進数です。これは、先頭に「0」があり、その値が10進数で27であることを意味するためです。

したがって、27 + 1 = 28

于 2010-12-07T13:57:16.430 に答える
0

ここに手がかりがあります:

  • 最初にゼロが付いた3桁は8進数です。
  • 最初に「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
于 2010-12-07T14:34:17.497 に答える