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

概要

<limits.h>C標準ライブラリのヘッダーファイルであり、さまざまなデータ型の制限を定義しています。これらのマクロは、整数型(char、short、int、longとlong longなど)および他のデータ型の最大値と最小値に関する情報を提供します。

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

ライブラリマクロ

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

宏 説明 值
文字型
CHAR_BIT char型のビット数 通常は8
CHAR_MIN char型の最小値(符号付きまたは符号なし) -128 または 0
CHAR_MAX char型の最大値(符号付きまたは符号なし) 127 または 255
SCHAR_MIN signed char型の最小値 -128
SCHAR_MAX signed char型の最大値 127
UCHAR_MAX unsigned char型の最大値 255
短整数型
SHRT_MIN short型の最小値 -32768
SHRT_MAX short型の最大値 32767
USHRT_MAX unsigned short型の最大値 65535
整数型
INT_MIN int型の最小値 -2147483648
INT_MAX int型の最大値 2147483647
UINT_MAX unsigned int型の最大値 4294967295
長整数型
LONG_MIN long型の最小値 -9223372036854775808L
LONG_MAX long型の最大値 9223372036854775807L
ULONG_MAX unsigned long型の最大値 18446744073709551615UL
長長整数型
LLONG_MIN long long型の最小値 -9223372036854775808LL
LLONG_MAX long long型の最大値 9223372036854775807LL
ULLONG_MAX unsigned long long型の最大値 18446744073709551615ULL

例

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

例

#include <stdio.h>
#include <limits.h>

int main() {
    printf("Character types:\n");
    printf("CHAR_BIT: %d\n", CHAR_BIT);
    printf("CHAR_MIN: %d\n", CHAR_MIN);
    printf("CHAR_MAX: %d\n", CHAR_MAX);
    printf("SCHAR_MIN: %d\n", SCHAR_MIN);
    printf("SCHAR_MAX: %d\n", SCHAR_MAX);
    printf("UCHAR_MAX: %u\n", UCHAR_MAX);

    printf("\nShort integer types:\n");
    printf("SHRT_MIN: %d\n", SHRT_MIN);
    printf("SHRT_MAX: %d\n", SHRT_MAX);
    printf("USHRT_MAX: %u\n", USHRT_MAX);

    printf("\nInteger types:\n");
    printf("INT_MIN: %d\n", INT_MIN);
    printf("INT_MAX: %d\n", INT_MAX);
    printf("UINT_MAX: %u\n", UINT_MAX);

    printf("\nLong integer types:\n");
    printf("LONG_MIN: %ld\n", LONG_MIN);
    printf("LONG_MAX: %ld\n", LONG_MAX);
    printf("ULONG_MAX: %lu\n", ULONG_MAX);

    printf("\nLong long integer types:\n");
    printf("LLONG_MIN: %lld\n", LLONG_MIN);
    printf("LLONG_MAX: %lld\n", LLONG_MAX);
    printf("ULLONG_MAX: %llu\n", ULLONG_MAX);

    return 0;
}

上記のプログラムをコンパイルして実行してみましょう。次の結果が生成されます:

Character types:
CHAR_BIT: 8
CHAR_MIN: -128
CHAR_MAX: 127
SCHAR_MIN: -128
SCHAR_MAX: 127
UCHAR_MAX: 255

Short integer types:
SHRT_MIN: -32768
SHRT_MAX: 32767
USHRT_MAX: 65535

Integer types:
INT_MIN: -2147483648
INT_MAX: 2147483647
UINT_MAX: 4294967295

Long integer types:
LONG_MIN: -9223372036854775808
LONG_MAX: 9223372036854775807
ULONG_MAX: 18446744073709551615

Long long integer types:
LLONG_MIN: -9223372036854775808
LLONG_MAX: 9223372036854775807
ULLONG_MAX: 18446744073709551615

<limits.h>整数型に関連する多くのマクロが提供されており、さまざまなデータ型の制限を記述しています。これらのマクロは、堅牢で移植性の高いコードを書くのに非常に役立ちます。プログラマーが異なるプラットフォームでデータ型の制限値を簡単に取得できるためです。

その他の拡張