<limits.h>
是 C 标准库中的一个头文件,定义了各种基本数据类型(如 int
、char
、long
等)的最小值、最大值以及相关的其他限制。它提供了多种常量,帮助程序员了解不同数据类型的边界,并确保程序在这些限制范围内运行。
📖 目录
1️⃣ <limits.h>
简介
- 作用:提供了关于整数类型(如
char
、int
、long
等)数值范围的常量,帮助开发者了解每种数据类型的最大值、最小值以及其他相关的常量。 - 用途:在进行数值比较、范围验证或界定边界时,
<limits.h>
提供的常量非常有用,尤其在处理溢出、下溢等问题时非常关键。
2️⃣ 常见常量
<limits.h>
中定义了多个常量,用于表示各个整数类型的最大值、最小值以及其他限制。以下是常见的常量:
宏常量 | 描述 |
---|---|
CHAR_BIT | char 类型的位数,通常为 8。 |
SCHAR_MIN | signed char 类型能表示的最小值。 |
SCHAR_MAX | signed char 类型能表示的最大值。 |
UCHAR_MAX | unsigned char 类型能表示的最大值。 |
SHRT_MIN | short 类型能表示的最小值。 |
SHRT_MAX | short 类型能表示的最大值。 |
USHRT_MAX | unsigned short 类型能表示的最大值。 |
INT_MIN | int 类型能表示的最小值。 |
INT_MAX | int 类型能表示的最大值。 |
UINT_MAX | unsigned int 类型能表示的最大值。 |
LONG_MIN | long 类型能表示的最小值。 |
LONG_MAX | long 类型能表示的最大值。 |
ULONG_MAX | unsigned long 类型能表示的最大值。 |
LLONG_MIN | long long 类型能表示的最小值。 |
LLONG_MAX | long long 类型能表示的最大值。 |
ULLONG_MAX | unsigned long long 类型能表示的最大值。 |
3️⃣ 数据类型限制
<limits.h>
中定义了用于表示各种整数类型的最小值和最大值的常量。以下是几个常见数据类型的限制:
📌 char
类型
- 最小值:
SCHAR_MIN
,通常为 -128(对于signed char
)。 - 最大值:
SCHAR_MAX
,通常为 127(对于signed char
)。 - 无符号
char
最大值:UCHAR_MAX
,通常为 255(对于unsigned char
)。 char
位数:CHAR_BIT
,通常为 8 位。
📌 short
类型
- 最小值:
SHRT_MIN
,通常为 -32768(对于signed short
)。 - 最大值:
SHRT_MAX
,通常为 32767(对于signed short
)。 - 无符号
short
最大值:USHRT_MAX
,通常为 65535(对于unsigned short
)。
📌 int
类型
- 最小值:
INT_MIN
,通常为 -2147483648(对于signed int
)。 - 最大值:
INT_MAX
,通常为 2147483647(对于signed int
)。 - 无符号
int
最大值:UINT_MAX
,通常为 4294967295(对于unsigned int
)。
📌 long
类型
- 最小值:
LONG_MIN
,通常为 -2147483648(对于signed long
)。 - 最大值:
LONG_MAX
,通常为 2147483647(对于signed long
)。 - 无符号
long
最大值:ULONG_MAX
,通常为 4294967295(对于unsigned long
)。
📌 long long
类型
- 最小值:
LLONG_MIN
,通常为 -9223372036854775808(对于signed long long
)。 - 最大值:
LLONG_MAX
,通常为 9223372036854775807(对于signed long long
)。 - 无符号
long long
最大值:ULLONG_MAX
,通常为 18446744073709551615(对于unsigned long long
)。
4️⃣ 整数的位数
<limits.h>
还定义了某些常量,用于指示整数类型的位数。
宏常量 | 描述 |
---|---|
CHAR_BIT | char 类型的位数,通常为 8 位。 |
SHRT_BITS | short 类型的位数,通常为 16 位。 |
INT_BITS | int 类型的位数,通常为 32 位。 |
LONG_BITS | long 类型的位数,通常为 32 位或 64 位(取决于平台)。 |
LLONG_BITS | long long 类型的位数,通常为 64 位。 |
5️⃣ 示例代码
📌 示例:使用 <limits.h>
获取数据类型的限制
#include <stdio.h>
#include <limits.h>
int main() {
printf("char 类型的最大值: %d\n", SCHAR_MAX);
printf("char 类型的最小值: %d\n", SCHAR_MIN);
printf("unsigned char 类型的最大值: %u\n", UCHAR_MAX);
printf("short 类型的最大值: %d\n", SHRT_MAX);
printf("short 类型的最小值: %d\n", SHRT_MIN);
printf("unsigned short 类型的最大值: %u\n", USHRT_MAX);
printf("int 类型的最大值: %d\n", INT_MAX);
printf("int 类型的最小值: %d\n", INT_MIN);
printf("unsigned int 类型的最大值: %u\n", UINT_MAX);
printf("long 类型的最大值: %ld\n", LONG_MAX);
printf("long 类型的最小值: %ld\n", LONG_MIN);
printf("unsigned long 类型的最大值: %lu\n", ULONG_MAX);
printf("long long 类型的最大值: %lld\n", LLONG_MAX);
printf("long long 类型的最小值: %lld\n", LLONG_MIN);
printf("unsigned long long 类型的最大值: %llu\n", ULLONG_MAX);
return 0;
}
输出:
char 类型的最大值: 127
char 类型的最小值: -128
unsigned char 类型的最大值: 255
short 类型的最大值: 32767
short 类型的最小值: -32768
unsigned short 类型的最大值: 65535
int 类型的最大值: 2147483647
int 类型的最小值: -2147483648
unsigned int 类型的最大值: 4294967295
long 类型的最大值: 2147483647
long 类型的最小值: -2147483648
unsigned long 类型的最大值: 4294967295
long long 类型的最大值: 9223372036854775807
long long 类型的最小值: -9223372036854775808
unsigned long long 类型的最大值: 18446744073709551615
🔹 解释:
- 使用
<limits.h>
中的宏常量,展示了不同数据类型的最大值和最小值,帮助开发者理解不同数据类型的范围。
6️⃣ 参考资料
📖 C 标准库官方文档 – limits.h
📖 GNU C Library – limits.h
📖 ISO C 标准(PDF)
📌 总结
<limits.h>
头文件提供了与整数类型相关的常量,帮助程序员了解各种基本数据类型的范围和限制。通过使用这些常量,开发者可以更好地进行数值验证,避免出现溢出等问题,确保程序在运行时的稳定性和可靠性。
发表回复