题目: 不使用大于、小于逻辑判断来得到两个数的大小
这个问题有很多种解法,下面仅仅举出其中两种:
方法一:
{
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<b) abx(a-b)=b-z; max=a+b+b-a/2=b;
方法二:
{
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]);
}