【C言語/C++】データ型の最大値と最小値の一覧【32/64bit環境 limits.h/stdint.h】

64bit環境におけるデータ型の最大値と最小値の一覧表です。

基本型は<limits.h>ヘッダに定義されています。実数型は<float.h>、幅指定がされた特殊な整数型については<stdint.h>ヘッダで定義されています。

各データ型のサイズについては以下のページを参考にして下さい。

データ型のサイズ・範囲の一覧【32bit/64bit環境】

limits.h

定数名対応する型と意味
char型
CHAR_BIT8char ビット幅
CHAR_MAX127char 最大値(符号無しの場合は 255)
CHAR_MIN-128char 最小値(符号無しの場合は 0)
SCHAR_MAX127signed char 最大値
SCHAR_MIN-128signed char 最小値
UCHAR_MAX255unsigned char 最大値
short型
SHRT_MAX32767short 最大値
SHRT_MIN-32768short 最小値
USHRT_MAX65535unsigned short 最大値
int型
INT_MAX2147483647int 最大値
INT_MIN-2147483648int 最小値
UINT_MAX4294967295unsigned int 最大値
long型(32bit環境、一部の64bit環境(Win64))
LONG_MAX2147483647long 最大値
LONG_MIN-2147483648long 最小値
ULONG_MAX4294967295unsigned long 最大値
long型(64bit環境)
LONG_MAX9223372036854775807long 最大値
LONG_MIN-9223372036854775808long 最小値
ULONG_MAX18446744073709551615unsigned long 最大値
long long型
LLONG_MAX9223372036854775807long long 最大値
LLONG_MIN-9223372036854775808long long 最小値
ULLONG_MAX18446744073709551615unsigned long long 最大値

一部の16bit/32bit/64bit環境におけるint/long型の最小値と最大値

定数名対応する型
int型(16bit環境: I16LP32, IP16L32、32bit環境: LP32)
INT_MIN-32768int 最小値
INT_MAX32767int 最大値
UINT_MAX65535unsigned int 最大値
long型(16bit環境、32bit環境: ILP32, LP32、64bit環境: LLP64)
LONG_MIN-2147483648long 最小値
LONG_MAX2147483647long 最大値
ULONG_MAX4294967295unsigned long 最大値
int型(64bit環境: IP64, ILP64, SILP64)
INT_MIN-9223372036854775808int 最小値
INT_MAX9223372036854775807int 最大値
UINT_MAX18446744073709551615unsigned int 最大値

一般的なデータモデル

データモデル備考
LLP6464bit版の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_MAX3.40282e+38long 最大値
FLT_MIN1.17549e-38long 最小値
double型
DBL_MAX1.79769e+308double 最大値
DBL_MIN2.22507e-308double 最小値
long double
LDBL_MAX1.18973e+4932long double 最大値
LDBL_MIN3.3621e-4932long double 最小値

stdint.h

定数名対応する型と意味
int8_t型
INT8_MAX127int8_t 最大値
INT8_MIN-128int8_t 最小値
UINT8_MAX255uint8_t 最大値
int16_t型
INT16_MAX32767int16_t 最大値
INT16_MIN-32768int16_t 最小値
UINT16_MAX65535uint16_t 最大値
int32_t型
INT32_MAX2147483647int32_t 最大値
INT32_MIN-2147483648int32_t 最小値
UINT32_MAX4294967295uint32_t 最大値
int64_t型
INT64_MAX9223372036854775807int64_t 最大値
INT64_MIN-9223372036854775808int64_t 最小値
UINT64_MAX18446744073709551615uint64_t 最大値
wchar_t型
WCHAR_MAX2147483647wchar_t 最大値
WCHAR_MIN-2147483648wchar_t 最小値
intptr_t型 / uintptr_t型
INTPTR_MAX9223372036854775807intptr_t 最大値
INTPTR_MIN-9223372036854775808intptr_t 最小値
UINTPTR_MAX18446744073709551615uintptr_t 最大値

wchar_tの最大値と最小値について

wchar_tの最大値/最小値は環境によって異なるなるため注意してください。Windows環境ではwchar_tは16bit型, Linux/macOS環境では32bit型で表現されていることが多いです。なおwchar_tのサイズ(バイト単位)はsizeof(wchar_t)で求めることができます。

広告