C++14整数最大/小值

来源:互联网 发布:淘宝修真记小说 编辑:程序博客网 时间:2024/06/05 23:56

Table of Contents

  • 1. 如何获取最大值
    • 1.1. C++14的方法
    • 1.2. 如何自己实现最大值
    • 1.3. 如何自己实现最小值

1 如何获取最大值

1.1 C++14的方法

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

输出结果为:

int-21474836482147483647

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;

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

Author: dean

Created: 2016-01-14 四 19:04

Validate


0 0
原创粉丝点击