两个变量a,b,不用判断语句,找出两个中比较大的那个变量
来源:互联网 发布:linux 光标移动到行尾 编辑:程序博客网 时间:2024/04/30 00:13
法一:位运算
#include <iostream>using namespace std;int my_max(int x,int y){int test[2]={x,y};unsigned int c; c=x-y;c>>=31; return test[c];}int main(){int a=7,b=11; // cout<<my_max(a,b)<<endl;// int c=a-b;cout<<my_max(a,b)<<endl;system("pause");return 0;}在my_max()中,通过对无符号数c右移31位,可得(a-b)的符号位,可知其为正还是为负,这样返回数组中相应的变量即可。
注意:对于有符号位数的位移,当右移时:1 .最高位是1,即负数,那么右移时不断补1;
2. 最高位是0,即正数,那么右移时不断补0;
对于无符号数的位移,当右移时:只补0;
因此,题中的无符号整形数c右移即可得到其符号位。
法二:
int max=((a+b)+abs(a-b))/2; int min=((a+b)-abs(a-b))/2;
这种方法是算出来的,并非像上面那样找出来的,但在别的时候也许会用到,因此也许留意一下
- 两个变量a,b,不用判断语句,找出两个中比较大的那个变量
- 两个变量a,b,不用判断语句,找出两个中比较大的那个变量
- 有两个变量a 和 b,不用if、?: 、switch 或者其他判断语句,找出两个数中比较大的那个
- 有两个变量a,b不用if ?: switch或其他判断语句找出两个数中比较大的数
- 有两个变量a和b,不用“if”、“? :”、“switch”或其他判断语句,找出两个数中比较大的
- 两个变量a,b,不用“if”,“? :”,switch或者其它判断语句,找出两个数中间比较大的
- 有两个变量a和b,不用if等判断语句,求两者较大的值
- 不用任何比较判断找出两个数中较大的
- 不用判断语句,求两个数中最大的那个数,
- 找出两个数中比较大的
- 判断两个数值中最大的一个以及不用中间变量交换两个数
- 不用任何比较判断找出两个数中较大的数
- 不用任何比较判断找出两个数中较大的数。
- 【面试题】不用if,条件表达式,switch等判断语句------找出两个数中较大的
- 找出两个int型变量的最大值和最小值,不使用if/:?/switch判断语句
- java中不用第三变量交换两个变量的值
- 剑指Offer——不用加减乘除求两个整数之和 + 不使用新的变量交换变量a,b
- 不用判断语句实现两个整数的比较
- Swing 各种提示框
- 在VirtualBox中体验Fedora15与GNOME3
- SoundHound:根据哼唱的旋律找到你想要的歌曲
- SetEvent/ResetEvent
- 预装MeeGo系统 联想IdeaPad S100欧洲开卖
- 两个变量a,b,不用判断语句,找出两个中比较大的那个变量
- spring security 3
- 如何同时启动两个Android 模拟器
- C++简单例子 分别用 数组 和 指针来输出单个字符
- 程序与编程语言简介
- 假设已经有了前序遍历和中序遍历的结果,通过一个算法重建这棵树
- 倒排索引压缩(无损压缩)
- 实时查看linux网卡流量脚本
- 异步加载网络数据,自定义进度条显示