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++使用标准输入的大小初始化数组

c++ - Uncrustify 对齐尾随评论?

c++ - 初始化在类中定义的数组

c++ - 使用 make 将 Qt 库复制到输出目录

c++ 你能命名子窗口以使其句柄静态吗?

c++ - 什么会导致 D3D11CreateDevice() 因 E_FAIL 而失败?

c++如何创建派生类模板的实例

c++ - 在文件中写入元素,读取不相同的元素

c++ - 如何修复这段充斥着模板的代码中的语法?