您的位置:首页 > 编程语言 > C语言/C++

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

2013-04-17 14:34 218 查看
有时候我们在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;
}

【版权声明】转载请注明出处 /article/4879597.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: