请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
搞的比较复杂。主要思想就是a-b的值的最高位是否为0;但是又得考虑整数溢出的问题,所以很复杂。不知道哪位大侠有更好的办法,指点指点。
#include <stdio.h>
#define ZHENG(i) ((i >> 31) == 0) #define FU(i) ((i >> 31) != 0) #define COMPARE(a,b) ((ZHENG(a) && FU(b)) || (((ZHENG(a) && ZHENG(b)) || (FU(a) && FU(b))) && ((((a) - (b)) >> 31) == 0)))
void main() { int a = 0x80000001; int b = 0x6FFFFFFF;
if(COMPARE(a,b)) { printf("a >= b\n"); } else { printf("a < b\n"); } }
|
阅读(6401) | 评论(11) | 转发(1) |