整数定数
定数の概要:インデックス への移動
整数定数は、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;