获取c或者c++里面的数据类型的范围
有时候我们在coding的过程中经常需要知道某个变量所能表示的最大或者最小值,在程序设计的基础课上老师肯定也都讲过,只是那么多的数值没办法都记住,下面是我的一些经验,这些也是一个程序员应该掌握的基本知识。
下面只以int类型举例,默认 int 32位。
首先要明白的是,整数采用的是补码表示方法,忘了补码概念的可以参考http://baike.baidu.com/view/377340.htm 。对于有符号整数,最高位是符号位,1表示负数,0表示正数。+0和-0的补码均为:所有位全部置0。
int 的最大值二进制表示为:01111111 11111111 11111111 11111111 即2^31-1
int的最小值二进制表示为:10000000 00000000 00000000 00000000 即-2^31 (补码表示的负数的绝对值求法:将包括符号位在内的所有位取反,然后加1,得到的结果视作一个无符号整数即为该负数的绝对值)
c++中std命名空间中定义了每个类型的最大、最小值等;对于浮点型数据还定义了对应的无限大的数
cout<<std::numeric_limits<int>::max()<<endl; int最大值
cout<<std::numeric_limits<int>::min()<<endl; int最小值
cout<<std::numeric_limits<double>::infinity()<<endl; double 的无限大
c语言中的头文件limits.h(c++对应头文件为climits)定义了整形数据类型的表达值范围(宏定义),该头文件定义的宏可以参考http://www.cplusplus.com/reference/climits/。
包含了该头文件后可以输出如下:
cout<<INT_MAX<<endl; int最大值
cout<<INT_MIN<<endl; int最小值
float.h 定义了double float的最大最小值,具体参考http://www.cplusplus.com/reference/cfloat/
---------------------------------------------------------
如果想要查看某个整形数据的各个二进制位的值,可以用如下函数
void fun( Type n) //type是某个整形类型如int long char short等,使用时要具体定义
{
bitset<8*sizeof(n)>b(n);
cout<<b<<endl;
}
【版权声明】转载请注明出处 http://www.cnblogs.com/TenosDoIt/archive/2013/04/17/3026232.html