写一个不用cmp指令不用临时变量的int max(int a,int b)函数 不用if ? : switch
来源:互联网 发布:上海php开发培训 编辑:程序博客网 时间:2024/05/17 23:53
int max(int a,int b)
{
return *( &a+(unsigned(a-b)>>(sizeof(int)*8-1)) );
}
int min(int a,int b)
{
return *( &b-(unsigned(a-b)>>(sizeof(int)*8-1)) );
}
#include
int main(int argc, char *argv[]){
printf("%d/n",max(-1,3));
printf("%d",min(-1,3)); return 0;
}
输出:3-1
关键就是负数的补码表示max,min中的代码
利用了 c/c++ 函数参数从右往左入栈的调用约定。(有些取巧)
- 写一个不用cmp指令不用临时变量的int max(int a,int b)函数 不用if ? : switch
- zz不用比较求大数max(int a, int b)
- 不用临时变量将两个int数字交换
- 不用变量交换两个int变量的值的分析
- 不用中间变量进行两个int值的交换
- 不用比较运算符,判断int型的a,b两数的大小的答案
- 不用比较运算符,判断int型的a,b两数的大小的答案
- 不用比较运算符,判断int型的a,b两数的大小的答案
- 不用比较运算符,判断int型的a,b两数的大小。
- 不用比较运算符,判断int型的a,b两数的大小
- 不用任何位操作,获得一个int变量的第九位
- 不用临时变量,交换整数a,b的值
- 不用 ?: > < if 定义MAX(a,b)/MIN(a,b) 宏
- 不用sizeof()函数求当前主机上的一个int占用几个字节
- 不用sizeof()函数求当前主机上的一个int占用几个字节
- 不用第三个变量,交换两个int数
- 不用if、switch、?: 实现a、b比较大小
- 有两个变量a,b不用if ?: switch或其他判断语句找出两个数中比较大的数
- 解决Mozilla Firefox浏览网页时JS、JavaScript脚本失效问题
- ArcGISMobile+WM6环境下,FeatureLayer图层的图元添加和删除操作
- 转:(C++)对象成员数组初始化/赋值讨论
- 一个程序员老总的年终总结2010版
- 输出带有表头的表格
- 写一个不用cmp指令不用临时变量的int max(int a,int b)函数 不用if ? : switch
- 九九乘法口诀表的输出,带分隔线
- 为linux虚拟机增加第二块硬盘
- 我来,第一篇博客
- 文件系统类型
- Windows7 下运行Matlab 7.0
- 高质量C++/C编程指南
- 心得
- linux乱记