不用判断语句,求两个数的最大值

 两个int类型的数据,不用任何的判断语句如if、switch、?:等,找出其中的大值

#include
using namespace std;

/*
int max(int a, int b)
{
    return ((a-b)>>(sizeof(int)*8-1)) ? b: a;
}
*/
int max(int a, int b)
{
    int tmp[2];
    tmp[(a-b)>>31] = a;
    tmp[(b-a)>>31] = b;
   
    return tmp[0];
}   
int main()
{
    cout << max(25, 2147483647) << endl;
    system("pause");
    return 0;
}   

这个算法在处理边界数据的时候还是有bug的,比如

cout << max(25, -2147483647) << endl;

的结果就不正确。

你可能感兴趣的:(学习)