入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

C/C++标准库中定义的各个类型最大值最小值limit.h

创建时间:2017-05-08 投稿人: 浏览次数:1348

  编程中,我们一般需要考虑各个数据类型能够存储的最大值。虽然我们知道例如char是1个字节,short int是2个字节,能够推倒出对应的最大值,但是这种累活实际上标准库早就通过预定义方式事先定义了,我们直接调用如INT_MAX常量符就行。这些预定义是记录在limit.h头文件中,下面罗列一些常用预定义:

//单字节 char和unsigned char类型
#define SCHAR_MIN   (-128)      /* minimum signed char value */
#define SCHAR_MAX     127       /* maximum signed char value */
#define UCHAR_MAX     0xff      /* maximum unsigned char value */

//双字节 short int和unsigned short类型
#define SHRT_MIN    (-32768)        /* minimum (signed) short value */
#define SHRT_MAX      32767         /* maximum (signed) short value */
#define USHRT_MAX     0xffff        /* maximum unsigned short value */

//4字节 int和unsigned int类型
#define INT_MIN     (-2147483647 - 1) /* minimum (signed) int value */
#define INT_MAX       2147483647    /* maximum (signed) int value */
#define UINT_MAX      0xffffffff    /* maximum unsigned int value */

#define LONG_MIN    (-2147483647L - 1) /* minimum (signed) long value */
#define LONG_MAX      2147483647L   /* maximum (signed) long value */
#define ULONG_MAX     0xffffffffUL  /* maximum unsigned long value */

//8字节 long long int和unsigned long long int类型
#define LLONG_MAX     9223372036854775807i64       /* maximum signed long long int value */
#define LLONG_MIN   (-9223372036854775807i64 - 1)  /* minimum signed long long int value */

  我们需要注意一下LONG_MIN和LONG_MAX,64位和32位定义的大小是不同的,上面是32位系统上预定义的long类型最大和最小存储数据值。
  所以一般情况下,如果需要存储8个字节大小的数据,使用long long int,这个无论32位系统还是64位系统都是8个字节。
  另外我需要多提一句,stdlib.h头文件中预定义的随机数最大值,RAND_MAX是0x7fff,这个预定义在随机数中调用会经常用到。

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。