//大家好,我是yishuihan
/*一看到这种不能用乘除、if等常规方法。那我们就要想到位运算;
在计算机中常用的就是与、或、非、异或、左移、右移运算等。
右移的情况比较复杂,假如是无符号数,那么右移,左边空出的位补0;
假如是有符号负数(正数),那么右移,左边会补1(补0);
所以建议使用左移;
a和b相减,如果结果大于0,最高位为0;否则,为负数最高位为1;
因为 在计算机中是使用补码存储的;下面的1<<31位,就是用1去与上最高位; */
#define cmp(a,b) (((a)-(b))&(1<<31))==1?-1:1;
//也可以这样写
#define cmp(a,b) (((a)-(b))&(0x80000000))==1?-1:1;