易百教程

35、如何检测两个整数是否有相反的符号(位操作)?

让给定的整数是ab。 如果a的符号位与b的符号位不同,则ab的符号位 (MSB) 的 EX-OR 将为 1。 换句话说,如果ab的符号相反,ab的异或将是负数。

示例代码:

bool CheckOppositeSign(int a, int b)
{
    bool bRetValue = 0;
    bRetValue = ((a ^ b) < 0); // true if a and b have opposite signs
    return bRetValue;
}

注意:bool 存在于 C-C99 规范中。