C 標準ライブラリ - <limits.h>


はじめに

limits.h ヘッダー ファイルは、さまざまな変数タイプのさまざまな属性を決定します。このヘッダー ファイルで定義されたマクロは、さまざまな変数タイプ (char、int、long など) の値を制限します。

これらの制限は、変数がこれらの制限を超える値を格納できないことを指定します。たとえば、符号なし変数が格納できる最大値は 255 です。

ライブラリマクロ

次の値は実装固有であり、#define ディレクティブを通じて定義されます。これらの値は、以下に示す値より小さくてはなりません。

マクロ 説明
CHAR_BIT8 バイト内のビット数を定義します。
SCHAR_MIN-128 署名付き文字の最小値を定義します。
SCHAR_MAX127 署名付き文字の最大値を定義します。
UCHAR_MAX255 符号なし文字の最大値を定義します。
CHAR_MIN0 は、char 型の最小値を定義します。char が負の値を表す場合、その値は SCHAR_MIN に等しく、それ以外の場合は 0 に等しくなります。
CHAR_MAX127 char 型の最大値を定義します。char が負の値を表す場合、その値は SCHAR_MAX に等しく、それ以外の場合は UCHAR_MAX に等しくなります。
MB_LEN_MAX1 マルチバイト文字の最大バイト数を定義します。
SHRT_MIN-32768short 整数の最小値を定義します。
SHRT_MAX+32767 short 整数の最大値を定義します。
USHRT_MAX65535 符号なし短整数の最大値を定義します。
INT_MIN-32768整数の最小値を定義します。
INT_MAX+32767 整数の最大値を定義します。
UINT_MAX65535符号なし整数の最大値を定義します。
LONG_MIN-2147483648長整数の最小値を定義します。
LONG_MAX+2147483647long 整数の最大値を定義します。
ULONG_MAX4294967295 符号なし長整数の最大値を定義します。

次の例は、limit.h ファイルで定義されたいくつかの定数の使用を示しています。

#include <stdio.h>#include <limits.h>int main(){

   printf("The number of bits in a byte %d\n", CHAR_BIT);

   printf("The minimum value of SIGNED CHAR = %d\n", SCHAR_MIN);
   printf("The maximum value of SIGNED CHAR = %d\n", SCHAR_MAX);
   printf("The maximum value of UNSIGNED CHAR = %d\n", UCHAR_MAX);

   printf("The minimum value of SHORT INT = %d\n", SHRT_MIN);
   printf("The maximum value of SHORT INT = %d\n", SHRT_MAX); 

   printf("The minimum value of INT = %d\n", INT_MIN);
   printf("The maximum value of INT = %d\n", INT_MAX);

   printf("The minimum value of CHAR = %d\n", CHAR_MIN);
   printf("The maximum value of CHAR = %d\n", CHAR_MAX);

   printf("The minimum value of LONG = %ld\n", LONG_MIN);
   printf("The maximum value of LONG = %ld\n", LONG_MAX);  
   return(0);}

上記のプログラムをコンパイルして実行すると、次の結果が得られます:

The number of bits in a byte 8The minimum value of SIGNED CHAR = -128The maximum value of SIGNED CHAR = 127The maximum value of UNSIGNED CHAR = 255The minimum value of SHORT INT = -32768The maximum value of SHORT INT = 32767The minimum value of INT = -32768The maximum value of INT = 32767The minimum value of CHAR = -128The maximum value of CHAR = 127The minimum value of LONG = -2147483648The maximum value of LONG = 2147483647