两个整数是否同号

原帖在此
这代码登不上大雅之堂,仅以此留作纪念。
#include <limits.h>

// 同号返回 1 ,否则返回 0
int sameSign(int a, int b)
{
    return !((a^b) & INT_MIN);
}

// 零可正可负
    return !(((a^b) & INT_MIN) && (a&&b));

// 视零为负,但有个 bug ,参数不能是 INT_MIN ,否则会溢出。
    --a, --b;
    return !((a^b) & INT_MIN);

你可能感兴趣的:(两个整数是否同号)