整数定数
定数の概要:インデックス への移動
整数定数は、10 進数(基数 10)、8 進数(基数 8)、16 進数(基数 16)のいずれかです。
10 進定数
0 から 4,294,967,295 までの 10 進定数が使用可能です。 この上限を超える定数は切り捨てられます。 10 進定数では、先頭にゼロを付けません。 ゼロで始まる整数定数は 8 進定数と解釈されます。 そのため、以下のようになります。
int i = 10; /*decimal 10 */ int i = 010; /*decimal 8 */ int i = 0; /*decimal 0 = octal 0 */
8 進定数
ゼロで始まる定数はすべて 8 進定数と解釈されます。 8 進定数に無効な数字 8 または 9 が含まれている場合は、エラーが報告されます。 また、037777777777 を超える 8 進定数は切り捨てられます。
16 進定数
0x(または 0X)で始まる定数はすべて 16 進定数と解釈されます。 0xFFFFFFFF を超える 16 進定数は切り捨てられます。
末尾に L や U の付いた整数定数
整数定数の末尾に L(または l)を付けると、その定数は long 型として表されます。 同様に、U(または u)を末尾に付けると、定数は unsigned 型になります。 使用される基数に関係なく、数値そのものが 10 進の 65,535 を超える場合、その定数の型は unsigned long になります。
定数の末尾に U(または u)が付いている場合、その定数のデータ型は unsigned int、unsigned long int のうち、その定数の値を格納できる最初の型になります。
定数の末尾に L(または l)が付いている場合、その定数のデータ型は long int、unsigned long int のうち、その定数の値を格納できる最初のものになります。
同じ定数の末尾に、順序や大文字/小文字に関係なく、L と U を両方とも付けることができます。たとえば、 ul、lu、UL などです。 定数の末尾に L と U の両方(ul、lu、Ul、lU、uL、Lu、UL、LU のいずれか)が付いている場合、その定数のデータ型は unsigned long int になります。
末尾に L や U の付いていない整数定数
整数定数の末尾に U、u、L、l のいずれも明示されていない場合、その定数のデータ型は、その値に基づいて決定されます。 そのデータ型は、以下の型のうち、整数定数値を格納できる最初のものになります。
|
[10 進数字] |
int、long int、unsigned long int |
|
8 進定数 |
int、unsigned int、long int、unsigned long int |
|
16 進定数 |
int、unsigned int、long int、unsigned long int |
整数定数値に従ってデータ型がどう決定されるかを以下の表に示します。
10 進定数 - 導出された型:
|
定数値 |
導出されたデータ型 |
0 ~ 32,767 |
INT |
32,768 ~ 2,147,483,647 |
LONG |
2,147,483,648 ~ 4,294,967,295 |
符号なし長整数。 |
> 4294967295 |
切り捨て |
8 進定数 - 導出された型:
|
定数値 |
導出されたデータ型 |
00 ~ 077777 |
INT |
010000 ~ 0177777 |
unsigned int |
02000000 ~ 017777777777 |
LONG |
020000000000 ~ 037777777777 |
符号なし長整数。 |
> 037777777777 |
切り捨て |
16 進定数 - 導出された型:
|
定数値 |
導出されたデータ型 |
0x0000 ~ 0x7FFF |
INT |
0x8000 ~ 0xFFFF |
unsigned int |
0x10000 ~ 0x7FFFFFFF |
LONG |
0x80000000 ~ 0xFFFFFFFF |
符号なし長整数。 |
> 0xFFFFFFFF |
切り捨て |
10 進定数と非 10 進定数ではルールが異なることに注意してください。
サイズ サフィックスの付いた整数定数
サイズ サフィックスを使用すれば、整数定数で占有されるメモリのバイト数(整数定数のサイズ)を指定できます。 使用できるサイズ サフィックスは、 i8、I8、i16、I16、i32、I32、i64、I64 のいずれかです。
サイズ サフィックスの前に unsigned(U または u)サフィックスを付けることができます。 たとえば、ui8、Ui16、UI32、ui64 などです。
サイズ サフィックスは、整数定数の宣言済みの拡張整数型に、正確に一致しなければなりません。 たとえば、拡張整数型の以下のような整数定数を使用できます。
__int16 s = 32767i16; unsigned __int16 us = 64532Ui16; unsigned __int32 ui = 223456789uI32;