标签:
题目描述
请编写一个方法,找出两个数字中最大的那个。条件是不得使用if-else等比较和判断运算符。
输入描述
给定两个int a和b
输出描述
请返回较大的一个数,若两数相同则返回任意一个。
输入样例
1,2
输出样例
2
分析
int c = (a - b) >> 31;
1) 当a >= b时,(a - b)符号位为0,(a - b)右移31位,高位补0,右移后的结果为0;
2) 当a < b时,(a - b)符号为-1,(a - b)右移31位,高位补0,右移后的结果为0;
return a + c * (a - b)
1) 当c = 0时,返回a;
2) 当c = -1时,返回b;
测试代码
1 #include <stdio.h> 2 3 int main(void) 4 { 5 int a, b, c; 6 scanf("%d%d", &a, &b); 7 c = (a - b) >> 31; 8 printf("%d\n", a + c * (a - b)); 9 return 0; 10 }
标签:
原文地址:http://www.cnblogs.com/maxin/p/5598699.html