检查两个整数是否具有相同符号的最简单方法是什么?有什么简短的逐位技巧可以做到这一点吗?
发布于 2008-09-15 21:12:14
这是一个在C/C++中工作的版本,它不依赖于整数大小或有溢出问题(即x*y>=0不能工作)
bool SameSign(int x, int y)
{
return (x >= 0) ^ (y < 0);
}
当然,你也可以使用geek和模板:
template <typename valueType>
bool SameSign(typename valueType x, typename valueType y)
{
return (x >= 0) ^ (y < 0);
}
注意:由于我们使用的是异或,所以当符号相同时,我们希望LHS和RHS是不同的,从而对零进行不同的检查。
发布于 2008-09-15 22:06:20
有什么问题吗
return ((x<0) == (y<0));
发布于 2008-09-15 21:06:18
(a ^ b) >= 0
如果符号相同,则计算结果为1,否则为0。
https://stackoverflow.com/questions/66882
复制相似问题