- 论坛徽章:
- 29
|
不用判断语句,求两个数的最大值
新的算法。
#include <stdio.h>;
#define INT_SIZE sizeof(int)*8
int max(int x,int y)
{
int arr[8]={x,y,x,x,y,y,x,y};
int z=x-y;
int site=0;
int bitx=!!(x&(1<<(INT_SIZE-1)));
int bity=!!(y&(1<<(INT_SIZE-1)));
int bitz=!!(z&(1<<(INT_SIZE-1)));
site^=bitz;
site^=bity<<1;
site^=bitx<<2;
return arr[site];
}
int main(int argc,char * argv[])
{
int x,y;
if (argc<3) {
printf ("pleas input two integer!\n" ;
return -1;
}
x=atoi(argv[1]);
y=atoi(argv[2]);
printf("the max is %d\n",max(x,y));
return 0;
} |
|