C 标准库 - <limits.h> 学习笔记

1. <limits.h> 概述

<limits.h> 是 C 标准库里的头文件,它包含了一些常量和类型定义,用来描述数据类型的取值范围等信息。这些信息是在编写可移植的、与平台无关的 C 代码时非常有用的。

2. 常量

<limits.h> 中定义了许多常用的常量,这里列出一些比较重要的常量:

  • CHAR_BIT:表示一个 char 类型的比特数;
  • 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 类型的最小值(C99 引入);
  • LLONG_MAX:表示 long long 类型的最大值(C99 引入);
  • ULLONG_MAX:表示 unsigned long long 类型的最大值(C99 引入)。

3. 实例

以下是一个简单的例子,展示了如何使用 <limits.h> 中的常量来计算数据类型的取值范围:

cCopy Code
#include <stdio.h> #include <limits.h> int main(void) { printf("char: %d ~ %d\n", CHAR_MIN, CHAR_MAX); printf("signed char: %d ~ %d\n", SCHAR_MIN, SCHAR_MAX); printf("unsigned char: 0 ~ %u\n", UCHAR_MAX); printf("short: %d ~ %d\n", SHRT_MIN, SHRT_MAX); printf("unsigned short: 0 ~ %u\n", USHRT_MAX); printf("int: %d ~ %d\n", INT_MIN, INT_MAX); printf("unsigned int: 0 ~ %u\n", UINT_MAX); printf("long: %ld ~ %ld\n", LONG_MIN, LONG_MAX); printf("unsigned long: 0 ~ %lu\n", ULONG_MAX); #ifdef __STDC_VERSION__ printf("long long: %lld ~ %lld\n", LLONG_MIN, LLONG_MAX); printf("unsigned long long: 0 ~ %llu\n", ULLONG_MAX); #endif return 0; }

输出结果:

Copy Code
char: -128 ~ 127 signed char: -128 ~ 127 unsigned char: 0 ~ 255 short: -32768 ~ 32767 unsigned short: 0 ~ 65535 int: -2147483648 ~ 2147483647 unsigned int: 0 ~ 4294967295 long: -9223372036854775808 ~ 9223372036854775807 unsigned long: 0 ~ 18446744073709551615 long long: -9223372036854775808 ~ 9223372036854775807 unsigned long long: 0 ~ 18446744073709551615

以上就是 <limits.h> 的简要介绍和示例,希望对你有帮助!