码迷,mamicode.com
首页 > 编程语言 > 详细

C++14整数最大/小值

时间:2016-01-14 10:58:28      阅读:190      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!