如何找到未知类型的最大整数值?有没有比这更有效的东西:
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;
}
如何找到未知类型的最大整数值?有没有比这更有效的东西:
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
在编译时进行评估。
std::numeric_limits<T>::max()
是一个很好的起点。
这很好:std::numeric_limits<T>::max()
或者如果你喜欢 boost: boost::integer_traits<T>::max()
。