c++ - 如何找到未知整数类型的最大值

标签 c++

如何找到未知类型的最大整数值? 有没有比这更有效的方法:

template<class T>
T test(T i) {
    if (((T)-1) > 0)
       return -1;
    T max_neg = ~(1 << ((sizeof(T)*8)-1));
    T all_ones = -1;
    T max_pos = all_ones & max_neg;
    return max_pos;
}

最佳答案

使用 std::numeric_limits<T>::max() .从 C++11 开始,此函数为 constexpr,因此在编译时进行评估。

关于c++ - 如何找到未知整数类型的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17521899/

相关文章:

c++ - C++中的Big Integer类。如何将数字插入无符号长整数数组中?

c++ - Qt Signal/Slots 发送一个完整的结构

c++ - #error WINDOWS.H 已包含在内。 MFC 应用程序不得#include <windows.h>

C++限制模板模板中的内部类型

c++ - 如何在输出的特定部分增加一个月?

c++ - 在名称包含 WinDBG 中空格的重载函数处设置断点

c++ - XCode4不能在<>中包含头文件

c++ - boost 压缩矩阵基础

c# - 当我将我的 c++ DLL(我从 c# 调用)重建为/CLR(最初是 native )时,性能下降了一半

c++ - 如何使用自定义库的 boost 库进行性能测试