Chinaunix首页 | 论坛 | 博客
  • 博客访问: 244670
  • 博文数量: 69
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 570
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-13 16:57
文章分类

全部博文(69)

文章存档

2011年(1)

2010年(5)

2009年(63)

我的朋友

分类: C/C++

2009-07-15 12:21:54

请定义一个宏,比较两个数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");
    }
}
阅读(1381) | 评论(0) | 转发(0) |
0

上一篇:简易聊天室

下一篇:word_track2

给主人留下些什么吧!~~