質問
次のコードフラグメント(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
所属していません StackOverflow