首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检查两个整数是否具有相同符号的最简单方法?

检查两个整数是否具有相同符号的最简单方法?
EN

Stack Overflow用户
提问于 2008-09-15 20:57:04
回答 18查看 48.5K关注 0票数 71

检查两个整数是否具有相同符号的最简单方法是什么?有什么简短的逐位技巧可以做到这一点吗?

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 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是不同的,从而对零进行不同的检查。

票数 52
EN

Stack Overflow用户

发布于 2008-09-15 22:06:20

有什么问题吗

return ((x<0) == (y<0));  
票数 227
EN

Stack Overflow用户

发布于 2008-09-15 21:06:18

(a ^ b) >= 0

如果符号相同,则计算结果为1,否则为0。

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档