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