请写一个程序,不用 if,条件表达式,switch 等判断语句,找出两个整数 a,b 中的较大者。
可以通过两个数之间的差值来进行判断,通过计算得到两个数的差值之后,去判断二进制最高位是0还是1,如果是0就代表正数,1为负数。代码实现如下:
#include<bits/stdc++.h>
using namespace std;
int main() {
int a, b;
cin>>a>>b;
int c = a - b;
char *str[5] = {"a比b大","b比a大"};
c = unsigned(c) >> (sizeof(int) * 8 - 1);
cout<<str[c];
return 0;
}
我们得到c之后通过二进制向右移动31位得到整数的最高位,这样就可以进行正负号的判断,如果为0意味a大,为1也就是b大。