64bit環境におけるデータ型の最大値と最小値の一覧表です。
基本型は<limits.h>
ヘッダに定義されています。実数型は<float.h>
、幅指定がされた特殊な整数型については<stdint.h>
ヘッダで定義されています。
各データ型のサイズについては以下のページを参考にして下さい。
データ型のサイズ・範囲の一覧【32bit/64bit環境】
limits.h
定数名 | 値 | 対応する型と意味 |
---|---|---|
char型 | ||
CHAR_BIT | 8 | char ビット幅 |
CHAR_MAX | 127 | char 最大値(符号無しの場合は 255)※ |
CHAR_MIN | -128 | char 最小値(符号無しの場合は 0)※ |
SCHAR_MAX | 127 | signed char 最大値 |
SCHAR_MIN | -128 | signed char 最小値 |
UCHAR_MAX | 255 | unsigned char 最大値 |
short型 | ||
SHRT_MAX | 32767 | short 最大値 |
SHRT_MIN | -32768 | short 最小値 |
USHRT_MAX | 65535 | unsigned short 最大値 |
int型 | ||
INT_MAX | 2147483647 | int 最大値 |
INT_MIN | -2147483648 | int 最小値 |
UINT_MAX | 4294967295 | unsigned int 最大値 |
long型(32bit環境、一部の64bit環境(Win64))※ | ||
LONG_MAX | 2147483647 | long 最大値 |
LONG_MIN | -2147483648 | long 最小値 |
ULONG_MAX | 4294967295 | unsigned long 最大値 |
long型(64bit環境)※ | ||
LONG_MAX | 9223372036854775807 | long 最大値 |
LONG_MIN | -9223372036854775808 | long 最小値 |
ULONG_MAX | 18446744073709551615 | unsigned long 最大値 |
long long型 ※ | ||
LLONG_MAX | 9223372036854775807 | long long 最大値 |
LLONG_MIN | -9223372036854775808 | long long 最小値 |
ULLONG_MAX | 18446744073709551615 | unsigned long long 最大値 |
一部の16bit/32bit/64bit環境におけるint/long型の最小値と最大値
定数名 | 値 | 対応する型 |
---|---|---|
int型(16bit環境: I16LP32, IP16L32、32bit環境: LP32) | ||
INT_MIN | -32768 | int 最小値 |
INT_MAX | 32767 | int 最大値 |
UINT_MAX | 65535 | unsigned int 最大値 |
long型(16bit環境、32bit環境: ILP32, LP32、64bit環境: LLP64) | ||
LONG_MIN | -2147483648 | long 最小値 |
LONG_MAX | 2147483647 | long 最大値 |
ULONG_MAX | 4294967295 | unsigned long 最大値 |
int型(64bit環境: IP64, ILP64, SILP64) | ||
INT_MIN | -9223372036854775808 | int 最小値 |
INT_MAX | 9223372036854775807 | int 最大値 |
UINT_MAX | 18446744073709551615 | unsigned int 最大値 |
一般的なデータモデル
データモデル | 備考 |
---|---|
LLP64 | 64bit版のWindowsで採用 |
LP64 | 一般的なUnix/Linux/macOS系のOSが採用 |
ILP32 | 一般的な32bit環境 |
その他のデータモデルや、各データモデル別のデータサイズについては、以下のページが参考になります。
参考: データモデル別 データサイズ対応表
char型の最小値と最大値について
char型の最小値CHAR_MINと最大値CHAR_MAXは、char型の定義方法によって異なる値に変化する事があります。一般的なコンパイル環境では、符号付きchar型(signed char)の最小値(-128, SCHAR_MIN)と最大値(127, SCHAR_MAX)と同等の値になることがほとんどですが、char型が符号付きのchar型(unsigned char)として定義された環境では、最小値CHAR_MINは0, 最大値CHAR_MAXはUCHAR_MAXと同等の255として定義されます。
#ifdef __CHAR_UNSIGNED__ /* コンパイラフラグ`-funsigned-char`指定時 */
#define CHAR_MIN 0
#define CHAR_MAX UCHAR_MAX
#else
#define CHAR_MIN SCHAR_MIN
#define CHAR_MAX SCHAR_MAX
#endif
char型の符号に関するより詳細な情報については、以下の記事が参考になります。
参考: データ型のサイズ・範囲の一覧表 #char型の符号について
long型の最小値と最大値について
32bit環境や特殊な64bit環境(LLP64(Win64))ではlong/unsigned long型の最大値と最小値がint/unsigned int型と同等のサイズになるため注意してください
# 一部の16bit/32bit/64bit環境におけるint/long型の最小値と最大値
long long型の最小値と最大値について
long long型の最小値と最大値はlong long型のデータサイズに依存します。long long型のデータサイズは処理系依存となるため注意して下さい。
参考: データ型のサイズ・範囲の一覧表 #long long型のサイズについて
float.h
定数名 | 値 | 対応する型と意味 | |
---|---|---|---|
float型 / double型 / long double | |||
FLT_MAX | 3.40282e+38 | long 最大値 | |
FLT_MIN | 1.17549e-38 | long 最小値 | |
double型 | |||
DBL_MAX | 1.79769e+308 | double 最大値 | |
DBL_MIN | 2.22507e-308 | double 最小値 | |
long double | |||
LDBL_MAX | 1.18973e+4932 | long double 最大値 | |
LDBL_MIN | 3.3621e-4932 | long double 最小値 |
stdint.h
定数名 | 値 | 対応する型と意味 |
---|---|---|
int8_t型 | ||
INT8_MAX | 127 | int8_t 最大値 |
INT8_MIN | -128 | int8_t 最小値 |
UINT8_MAX | 255 | uint8_t 最大値 |
int16_t型 | ||
INT16_MAX | 32767 | int16_t 最大値 |
INT16_MIN | -32768 | int16_t 最小値 |
UINT16_MAX | 65535 | uint16_t 最大値 |
int32_t型 | ||
INT32_MAX | 2147483647 | int32_t 最大値 |
INT32_MIN | -2147483648 | int32_t 最小値 |
UINT32_MAX | 4294967295 | uint32_t 最大値 |
int64_t型 | ||
INT64_MAX | 9223372036854775807 | int64_t 最大値 |
INT64_MIN | -9223372036854775808 | int64_t 最小値 |
UINT64_MAX | 18446744073709551615 | uint64_t 最大値 |
wchar_t型 ※ | ||
WCHAR_MAX | 2147483647 | wchar_t 最大値 |
WCHAR_MIN | -2147483648 | wchar_t 最小値 |
intptr_t型 / uintptr_t型 | ||
INTPTR_MAX | 9223372036854775807 | intptr_t 最大値 |
INTPTR_MIN | -9223372036854775808 | intptr_t 最小値 |
UINTPTR_MAX | 18446744073709551615 | uintptr_t 最大値 |
wchar_tの最大値と最小値について
wchar_tの最大値/最小値は環境によって異なるなるため注意してください。Windows環境ではwchar_tは16bit型, Linux/macOS環境では32bit型で表現されていることが多いです。なおwchar_tのサイズ(バイト単位)はsizeof(wchar_t)
で求めることができます。