<limits.h> 是 C 标准库中的一个头文件,定义了各种基本数据类型(如 intcharlong 等)的最小值最大值以及相关的其他限制。它提供了多种常量,帮助程序员了解不同数据类型的边界,并确保程序在这些限制范围内运行。


📖 目录

  1. <limits.h> 简介
  2. 常见常量
  3. 数据类型限制
  4. 整数的位数
  5. 示例代码
  6. 参考资料

1️⃣ <limits.h> 简介

  • 作用:提供了关于整数类型(如 charintlong 等)数值范围的常量,帮助开发者了解每种数据类型的最大值、最小值以及其他相关的常量。
  • 用途:在进行数值比较、范围验证或界定边界时,<limits.h> 提供的常量非常有用,尤其在处理溢出、下溢等问题时非常关键。

2️⃣ 常见常量

<limits.h> 中定义了多个常量,用于表示各个整数类型的最大值、最小值以及其他限制。以下是常见的常量:

宏常量描述
CHAR_BITchar 类型的位数,通常为 8。
SCHAR_MINsigned char 类型能表示的最小值。
SCHAR_MAXsigned char 类型能表示的最大值。
UCHAR_MAXunsigned char 类型能表示的最大值。
SHRT_MINshort 类型能表示的最小值。
SHRT_MAXshort 类型能表示的最大值。
USHRT_MAXunsigned short 类型能表示的最大值。
INT_MINint 类型能表示的最小值。
INT_MAXint 类型能表示的最大值。
UINT_MAXunsigned int 类型能表示的最大值。
LONG_MINlong 类型能表示的最小值。
LONG_MAXlong 类型能表示的最大值。
ULONG_MAXunsigned long 类型能表示的最大值。
LLONG_MINlong long 类型能表示的最小值。
LLONG_MAXlong long 类型能表示的最大值。
ULLONG_MAXunsigned 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_BITchar 类型的位数,通常为 8 位。
SHRT_BITSshort 类型的位数,通常为 16 位。
INT_BITSint 类型的位数,通常为 32 位。
LONG_BITSlong 类型的位数,通常为 32 位或 64 位(取决于平台)。
LLONG_BITSlong 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> 头文件提供了与整数类型相关的常量,帮助程序员了解各种基本数据类型的范围和限制。通过使用这些常量,开发者可以更好地进行数值验证,避免出现溢出等问题,确保程序在运行时的稳定性和可靠性。