C++ のデータ型範囲とそのマクロ

競技プログラミングではほとんどの場合、そのデータ型が保持できる最大値または最小値を変数に割り当てる必要がありますが、そのような大きくて正確な数値を記憶するのは困難な作業です。したがって、C++ にはこれらの数値を表す特定のマクロがあり、実際に整数を入力しなくても変数に直接割り当てることができます。

C++ のヘッダー ファイルは、整数データ型の上限と下限を表すマクロを定義します。 float および double の制限のマクロを定義します。これらのマクロを使用すると、手動で入力することなく、これらの極値を変数に簡単に割り当てることができます。

例を見てみましょう:

C++
   #include          // for int char macros   #include         // for float double macros   #include         using     namespace     std  ;   int     main  ()     {          // Displaying ranges with the help of macros      cout      < <     'char ranges from: '      < <     CHAR_MIN      < <     ' to '       < <     CHAR_MAX      < <     endl  ;      cout      < <     '  n  nshort int ranges from: '      < <     SHRT_MIN       < <     ' to '      < <     SHRT_MAX      < <     endl  ;      cout      < <     '  n  int ranges from: '      < <     INT_MIN      < <     ' to '       < <     INT_MAX      < <     endl  ;      cout      < <     '  n  long int ranges from: '      < <     LONG_MIN      < <     ' to '       < <     LONG_MAX      < <     endl  ;      cout      < <     '  n  float ranges from: '      < <     FLT_MIN      < <     ' to '       < <     FLT_MAX      < <     endl  ;      return     0  ;   }   


出力

 char ranges from: -128 to 127   

nshort int ranges from: -32768 to 32767

int ranges from: -2147483648 to 2147483647

long int ranges from: -9223372036854775808 to 9223372036854775807

float ranges from: 1.17549e-38 to 3.40282e+38

データ型とその範囲マクロ

データ型マクロの一部のリストを以下に示します。

データ型

範囲

最小値のマクロ

最大値のマクロ

チャー

-128 ~ +127

Char_min

CHAR_MAX

短い文字

-128 ~ +127

SCHAR_MIN

SCHAR_MAX

符号なし文字

0~255

--

フライングマックス

短い整数

-32768 ~ +32767

SHRT_MIN

SHRT_MAX

unsigned short int

0~65535

--

USHRT_MAX

整数

-2147483648 ~ +2147483647

INT_MIN

INT_MAX

符号なし整数

0 ~ 4294967295

--

UINT_MAX

長い整数

-9223372036854775808 ~ +9223372036854775807

LONG_MIN

LONG_MAX

符号なし長整数

0 ~ 18446744073709551615

--

ウソンマックス

長い長い整数

-9223372036854775808 ~ +9223372036854775807

Ship_min

LLONG_MAX

符号なしlong long int

0 ~ 18446744073709551615

--

ULLONG_MAX

フロート

1.17549e-38 ~ 3.40282e+38

Flt_min

FLT_MAX

浮動小数点 (負の値)

-1.17549e-38 ~ -3.40282e+38

-Lt_min

-FLT_MAX

ダブル

2.22507e-308 ~ 1.79769e+308

DBL_MIN

DBL_MAX

ダブル(マイナス)

-2.22507e-308 ~ -1.79769e+308

-DBL_MIN

-DBL_MAX

最新の C++ におけるデータ型の制限

データ型の上限と下限に対する上記のマクロ アプローチは、C++ に継承された古い C 言語のアプローチです。ただし、C++ には、プログラマーに同じ情報を提供する独自の方法もあります。

C++ が提供するのは、 数値制限 <> これらのマクロの最新の代替手段としてクラス テンプレートを使用します。このテンプレートは、データ型の制限にアクセスするための、よりオブジェクト指向のアプローチを提供します。内部で定義されています ヘッダファイル。

例を見てみましょう:

C++
   #include          #include         using     namespace     std  ;   int     main  ()     {          // Displaying ranges with the help of macros      cout      < <     'short int ranges from: '      < <     numeric_limits   <  short     int  >::  min  ()       < <     ' to '      < <     numeric_limits   <  short     int  >::  max  ()      < <     endl  ;      cout      < <     '  n  int ranges from: '      < <     numeric_limits   <  int  >::  min  ()      < <     ' to '       < <     numeric_limits   <  int  >::  max  ()      < <     endl  ;      cout      < <     '  n  long int ranges from: '      < <     numeric_limits   <  long  >::  min  ()      < <     ' to '       < <     numeric_limits   <  long  >::  max  ()      < <     endl  ;      cout      < <     '  n  float ranges from: '      < <     numeric_limits   <  float  >::  min  ()      < <     ' to '       < <     numeric_limits   <  float  >::  max  ()      < <     endl  ;      return     0  ;   }   


出力

 short int ranges from: -32768 to 32767   

int ranges from: -2147483648 to 2147483647

long int ranges from: -9223372036854775808 to 9223372036854775807

float ranges from: 1.17549e-38 to 3.40282e+38

マクロベースのアプローチと比較してタイプセーフで読みやすいため、マクロの代わりにこのアプローチを使用してデータ型の上限と下限を見つけることをお勧めします。