首页 > 编程语言 > 详细

C++14整数最大/小值

时间:2016-01-14 10:56:53      阅读:136      评论:0      收藏:0      [点我收藏+]

1 如何获取最大值

1.1 C++14的方法

std::cout << "int\t"
  << std::numeric_limits<int>::lowest() << ‘\t‘
  << std::numeric_limits<int>::max() << ‘\n‘;

输出结果为:

int	-2147483648	2147483647

1.2 如何自己实现最大值

int max_int = (int)((unsigned)~0 >> 1);
cout << max_int << endl;

输出结果为:

2147483647

结果是一样的. 这行代码需要解读:

  • ~0 是取反, 所有位都设置为1
  • (unsigned)转型是把左起第一位解读为无符号位,为下一步右移做准备
  • >> 1 是右移一位(除以2), 因为是unsigned类型整数, 所以左边补0
  • 再将结果转换成目标类型int, 因为没有溢出,所以肯定可以

1.3 如何自己实现最小值

int min = -(int)((unsigned)~0 >> 1) - 1;

只是在已经算出的最大值的基础上加上符号, 并减一.

Author: dean

Created: 2016-01-14 四 10:37

Validate

C++14整数最大/小值

原文:http://blog.csdn.net/csfreebird/article/details/50515601

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!