这是在 C 和 C++ 代码中测试最大无符号值的正确方法吗:
if(foo == -1)
{
// at max possible value
}
其中 foo 是一个 unsigned int
,一个 unsigned short
,等等。
最佳答案
对于 C++,我相信您最好使用 numeric_limits
来自 <limits>
的模板标题:
if (foo == std::numeric_limits<unsigned int>::max())
/* ... */
对于 C,其他人已经指出了 <limits.h>
header 和 UINT_MAX
.
显然,“允许命名类型的解决方案很简单”,因此您可以:
template<class T>
inline bool is_max_value(const T t)
{
return t == std::numeric_limits<T>::max();
}
[...]
if (is_max_value(foo))
/* ... */
关于c++ - 测试最大无符号值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4539469/