<limists.h>头文件专门用于检测整形数据数据类型的表达值范围。(浮点型类似的有<float.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的十进制最大值
在一个补码运算的机器上,有符号整数类型的范围是:(- 2^位数 )到(+ 2^位数 -1),无符号整数类型的范围是:0到(+ 2^位数 -1),这里一定要注意!
例如下面的例子:
#include<stdio.h>
#include<limits.h>
void main()
{
printf("%d",UINT_MAX);
system("pause");
return 0;
}
如果你运行上面的例子,会发现输出为-1,而不是你想得到的4294967295(我的机器是32位的),那这是什么原因呢?
无符号INT最大二进制为(11111111111111111111111111111111),也就是十六进制的(0xffffffff),
而我们是用(“%d”,)来输出的,即按有符号取补码输出,所以得到的是-1;
改成printf("%u",UINT_MAX)后,我们才能得到想要的答案。