获取c或者c++里面的数据类型的范围

时间:2021-08-20 15:12:56

有时候我们在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