淡泊明志 宁静致远
分类: 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]);
}