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++ - SDL 和 g++ 总是产生错误?

c++ - DwmExtendFrameIntoClientArea 不起作用

c++ - 就地修改并返回拷贝是否有意义?

C++ boost Asio : How do I have multiple clients?

c++ - 如何使用可变模板来包装可变数量的函数参数?

c++ - C++ std::map 崩溃

c++ - std::list 在 libev 回调中崩溃

c++ - 带有模板参数或类型名的模板函数

c++ - 如何在 Visual Studio 中打开 C++ 项目文件夹?

C++模板方法,基于模板类改变行为