方法一:位运算
题解:在32位的编译器中,一个int是32位的。 由于数字在计算机中以反码表示,所以如果c的值为负值则第32位为1,于是右移31位后得到c=1,同理若c值为正,则c=0。
#include <iostream>
using namespace std;
int my_max(int x, int y)
{
int text[2] = {x, y};
unsigned int c;
c = x - y;
c >>= 31;
return text[c];
}
int main()
{
int a = 7, b = 11;
cout << my_max(a, b) << endl;
return 0;
}
方法二:绝对值法
#include <iostream>
using namespace std;
int my_min(int x, int y)
{
return ((x+y) - abs(x-y)) / 2;
}
int my_max(int x, int y)
{
return ((x+y) + abs(x-y)) / 2;
}
int main()
{
int a = 7, b = 11;
cout << "较小的数为:" << my_min(a, b) << endl;
cout << "较大的数为:" << my_max(a, b) << endl;
return 0;
}