C++14整数最大/小值
Table of Contents
- 1. 如何获取最大值
- 1.1. C++14的方法
- 1.2. 如何自己实现最大值
- 1.3. 如何自己实现最小值
1 如何获取最大值
1.1 C++14的方法
std::cout << "int " << std::numeric_limits<int>::lowest() << " " << std::numeric_limits<int>::max() << " ";
输出结果为:
int -2147483648 2147483647
1.2 如何自己实现最大值
int max_int = (int)((unsigned)~0 >> 1); cout << max_int << endl;
输出结果为:
2147483647
结果是一样的. 这行代码需要解读:
- ~0 是取反, 所有位都设置为1
- (unsigned)转型是把左起第一位解读为数值位(符号位为0,但是不显示),为下一步右移做准备
- >> 1 是右移一位(除以2), 因为是unsigned类型整数, 所以左边补符号位0
- 再将结果转换成目标类型int, 因为没有溢出,所以肯定可以
1.3 如何自己实现最小值
int min = -(int)((unsigned)~0 >> 1) - 1;
只是在已经算出的最大值的基础上加上负号, 并减一.
Created: 2016-01-14 四 19:04
Validate
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: 用curl访问HTTPS站点并登录
- 下一篇: MongoDB 减法查询