不用判断条件,取a,b最大值

今天看到一个有意思的题目:

爱立信面试题:

已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者。

腾讯面试题:

请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句

看到网友的答案:

int getMax2(int a,int b){int t = (a+b + fabs(a-b))/2;return t;}int getMax3(int a,int b){int arr[] = {a,b};int c = a<b;return arr[c];}这两种方法:

第一个有网友对 fabs 不太赞同,,有判断的嫌疑。

第二个使用了小于号 <

自己想了一个笨的方法:

int getMax1(int a,int b){return ((a/b)*a + (b/a)*b) / (a/b + b/a);}还看到一个大神的写法:

int getMax4(int a,int b){int c=-((b-a)>>31);//由系统决定,右移补符号位则要有负号,补0则不需要return c*a+(1-c)*b;}

你要以乐观的态度看待这个世界,你会发现世界是如此得美好

不用判断条件,取a,b最大值

相关文章:

你感兴趣的文章:

标签云: