通常要检测负数,您只需执行 if(x < 0) ...
.但是,没有硬编码文字的最佳方式是什么?这不是我需要避免的值,而是数据类型。我正在寻找 <algorithm>
风格的东西.
我有以下解决方案,但有更好的方法吗?有些事情告诉我这不是尽可能高效。
template<typename T>
inline bool is_negative(const T& n)
{
return n < (n - n);
}
我想使用与 uses 相同的限制。所以可以要求T
实现算术运算符,但没有比这更具体/专门的了。
否则我们可以通过要求 T
来解决这个问题实现:
-
bool operator <(int)
-
T()
(我们假设的默认构造函数等于 0) - 或者为什么不只需要
bool IsNegative()
这只是出于我自己的好奇心;不用于任何项目。
最佳答案
return n < T();
(现在我想知道你为什么有那个限制)。
关于c++ - 在不使用文字的情况下检测负数的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6943262/