7. limits.h

  • limits.h提供了用来定义各种整数类型(包括字符类型)取值范围的宏。
    • CHAR_BIT:每个字符包含的二进制位数。
    • SCHAR_MIN:signed char 类型的最小值。
    • SCHAR_MAX:signed char 类型的最大值。
    • UCHAR_MAX:unsiged char 类型的最大值。
    • CHAR_MIN:char 类型的最小值。
    • CHAR_MAX:char 类型的最大值。
    • MB_LEN_MAX:多字节字符最多包含的字节数。
    • SHRT_MIN:short int 类型的最小值。
    • SHRT_MAX:short int 类型的最大值。
    • USHRT_MAX:unsigned short int 类型的最大值。
    • INT_MIN:int 类型的最小值。
    • INT_MAX:int 类型的最大值。
    • UINT_MAX:unsigned int 类型的最大值。
    • LONG_MIN:long int 类型的最小值。
    • LONG_MAX:long int 类型的最大值。
    • ULONG_MAX:unsigned long int 类型的最大值。
    • LLONG_MIN:long long int 类型的最小值。
    • LLONG_MAX:long long int 类型的最大值。
    • ULLONG_MAX:unsigned long long int 类型的最大值。
  • 下面的示例是使用预处理指令判断,int 类型是否可以用来存储大于 100000 的数。
    #if INT_MAX < 100000
      #error int type is too small
    #endif
    
  • 上面示例中,如果 int 类型太小,预处理器会显示一条出错消息。
  • 可以使用limit.h里面的宏,为类型别名选择正确的底层类型。
    #if INT_MAX >= 100000
      typedef int Quantity;
    #else
      typedef long int Quantity;
    #endif
    
  • 上面示例中,如果整数类型的最大值(INT_MAX)不小于100000,那么类型别名Quantity指向int,否则就指向long int