且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

获取整数的最大值最小值

更新时间:2022-09-03 08:50:50

c/c++常需要获得最大值,最小值,通常这两个数与平台和操作系统有关,因此可移植的办法就是推荐使用库函数提供的常量定义

1. 利用语言自定义

类似的常量定义在limits.h和float.h头文件中。在头文件中,整数的最值通常是这样的名字:INT_MAX, INT_MIN,直接使用即可。

 

2. 自定义变量

int MAX_INT = ((unsigned)(-1))>>1;
int MIN_INT = ~MAX_INT;

解释

int占4个字节。-1是有符号数,默认用补码表示,二进制表示为32个1,如果强制解释为无符号数,那么

(unsigned)(-1)

=(11111111 11111111 11111111 11111111)2(无符号数)

=2^0+2^1+2^2+....+2^31

=2^32-1

=4294967295

那么右移一位

(unsigned)(-1)>>1

=(01111111 11111111 11111111 11111111)2(无符号数)

=2^31-1

=2147483647

程序例证

获取整数的最大值最小值
#include <iostream>
using namespace std;
int main()
{
    int max_int = (unsigned)(-1) >> 1;
    int min_int = ~max_int;
    cout << (signed)(-1) << endl;
    cout << (unsigned)(-1) << endl;
    cout << max_int << "\t" << min_int << endl;
}
获取整数的最大值最小值

结果

获取整数的最大值最小值

注意

~(unsigned(-1) >> 1) = 2147483648(无符号的)

~max_int = 2147483648(有符号的)

 



本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/3530000.html,如需转载请自行联系原作者