Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1408344
  • 博文数量: 143
  • 博客积分: 10005
  • 博客等级: 上将
  • 技术积分: 1535
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-23 17:25
个人简介

淡泊明志 宁静致远

文章分类

全部博文(143)

文章存档

2011年(2)

2009年(1)

2007年(22)

2006年(118)

我的朋友

分类: C/C++

2006-11-06 09:05:03

题目: 不使用大于、小于逻辑判断来得到两个数的大小

这个问题有很多种解法,下面仅仅举出其中两种:

方法一:

{

int a=-86,b=22;
 int max=((a+b)+abs(a-b))/2;
 printf("max=%d\n",max);

}

程序分析:max=((a+b)+abs(a-b))/2;
if(a>b) abs(a-b)=a-b; max=a+b+a-b/2=a;
if(a

方法二:

{

int a=-86,b=22;
 char *str[2]={"a大","b大"};
 int c=a-b;
 c=(unsigned)c>>(sizeof(int)*8-1);
 printf("%s\n",str[c]);

}

阅读(1668) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~