要判断某种特定类型可以容纳的最大值或最小值,一种简便的方法是使用ANSI标准头文件limits.h中的预定义值。该文件包含一些很有用的常量,它们定义了各种类型所能容纳的值,下表列出了这些常量:
常 量 描 述
CHAR_BIT char的位数(bit)
CHAR_MAX char的十进制整数最大值
CHAR_MIN char的十进制整数最小值
MB_LEN_MAX 多字节字符的最大字节(byte)数
INT_MAX int的十进制最大值
INT_MIN int的十进制最小值
LONG_MAX long的十进制最大值
LONG_MIN long的十进制最小值
SCHAR_MAX signedchar的十进制整数最大值
SCHAR_MIN signedchar的十进制整数最小值
SHRT_MIN short的十进制最小值
SHRT_MAX short的十进制最大值
UCHAR_MAX unsignedchar的十进制整数最大值
UINT_MAX unsignedint的十进制最大值
ULONG_MAX unsignedlongint的十进制最大值
USHRT_MAX unsignedshortint的十进制最大值
printf("char_max: %d \n",CHAR_MAX);
printf("char_min: %d \n",CHAR_MIN);
printf("short_max: %d \n",SHRT_MAX);
printf("short_min: %d \n",SHRT_MIN);
printf("int_max: %d \n",INT_MAX);
printf("int_min: %d \n",INT_MIN);
printf("long_max: %ld \n",LONG_MAX);
printf("unsigned char max: %u \n",UCHAR_MAX);
printf("unsigned short max: %u \n",USHRT_MAX);
printf("unsigned int max: %u \n",UINT_MAX);
printf("unsigned long max: %u \n",ULONG_MAX);
注意,无符号整型最小值为0。
unsigned int x = 0;
printf("unsigned int 0 - 1 = %u \n",x-1);
输出结果为:4294967295 (无符号的0xFFFFFFFF)
给自己提个醒,编程中要注意这点!