C++交换两个变量值的方法
简单地列一下交换两个变量值地几种方法。
1、通过第三方实现,这一种也是最最最常见普通的方法:
void swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
2、加减法,要注意数据溢出
void swap(int *a, int *b)
{
(*a) += (*b);
(*b) = (*a) - (*b);
(*a) = (*a) - (*b);
}
3、位运算法,适用类型:short、int、long等整型,不适用float、double等浮点型。
void swap(long &a, long &b)
{
a = a^b;
b = a^b;
a = a^b;
}
4、汇编方法,此方法不太适合用于子函数调用,并且不适合VS的x64,只能用于VS的win32项目(有解决方法的)
void swap(int &a, int &b)
{
_asm
{
push a;
push b;
pop a;
pop b;
};
}
void main(int argc, char *argv[])
{
int a = 4.13;
int b = 5.12;
cout << a << "," << b << endl;
swap(a, b);
cout << a << "," << b << endl;
_asm
{
push a;
push b;
pop a;
pop b;
};
cout << a << "," << b << endl;
system("pause");
}

还有很多稀奇古怪乱七八糟天花乱坠令人眼花缭乱赞不绝口骂不出声的方法,这里就不敢继续恭维了....所以,比较推荐第一种,也是最普通的那种方法,因为一个第三方变量对于现在大部分硬件来说,应该,这都不占内存了吧,所以总的来说,我常用第一种,然后偶尔用第二种,第三种和第四种甚至第五第六...感觉就是在无聊炫技(-_-!!!)...
东风知我欲山行,吹断檐间积雨声。
岭上晴云披絮帽,树头初日挂铜钲。
野桃含笑竹篱短,溪柳自摇沙水清。
西崦人家应最乐,煮芹烧笋饷春耕。
身世悠悠我此行,溪边委辔听溪声。
散材畏见搜林斧,疲马思闻卷旆钲。
细雨足时茶户喜,乱山深处长官清。-- 苏轼 《新城道中二首其一》
C++交换两个变量值的方法的更多相关文章
- python中交换两个变量值的方法
a = 4b = 5 #第1种c = 0c = aa = bb = c #第2种a = a+bb = a-ba = a-b #第3种a,b = b,a print("a=%d,b=%d&qu ...
- C#交换两个变量值的多种写法
在学习.Net/C#或者任何一门面向对象语言的初期,大家都写过交换两个变量值,通常是通过临时变量来实现.本篇使用多种方式实现两个变量值的交换. 假设int x =1; int y = 2;现在交换两个 ...
- JavaScript交换两个变量值的七种解决方案
前言 这篇文章总结了七种办法来交换a和b的变量值 1 2 var a = 123; var b = 456; 交换变量值方案一 最最最简单的办法就是使用一个临时变量了,不过使用临时变量的方法实在是太l ...
- java交换两个变量值a,b的多钟方法
首先我们定义两个变量用来检查方法可行性 int a=5; int b=3; 方法一,也是最容易想到的,就是建立中间变量法 int temp; temp=a; a=b; b=temp; System.o ...
- Python交换两个变量值的函数
方法1:(错误) def func(a,b): a,b = b,a a = 1 b = 2 func(a,b) print(a," ",b) 方法2:(正确) def func(a ...
- java 位运算符 以及加法 交换两个变量值
先给出十转二的除法 2 60 30 0 15 0 7 1 3 1 1 1 0 1 60转二 111100 再介绍位运算符 a=60 b=13 A = 0011 1100 B ...
- ORACLE获取SQL绑定变量值的方法总结
本文总结一下ORACLE数据库中如何获取SQL绑定变量值的方法,在SQL优化调优过程中,经常会用到这方面的知识点.在此梳理.总结一下,方面日后查找.翻阅. 方法1:查询V$SQL V$SQL视图中 ...
- 获取oracle sql语句中绑定变量值的方法
在诊断 sql的性能问题时,我们有时候须要获取其绑定变量的实际值,然后将此实际值带入到sql语句其中,用原来的sql构成select语句(带where条件),实际的运行一下,看一下选择性怎样. 本文就 ...
- 两个变量值交换的方法总结(js,python)
方法一: 临时变量法 <script> var num1 = 10; var num2 = 20; var temp;//定义临时变量 temp = num1; num1 = num2; ...
随机推荐
- 51nod 1765 谷歌的恐龙
一开始看到了期望吓半死..然后弱弱的写了一下式子.设∑是出去m项之后的和,∑' 是m项的和. E=(n/m)*(∑'/m)+(n/m)*((n-m)/n)*(∑'/m+∑/(n-m))+(n/m)*( ...
- springboot学习3事务控制
springboot学习3事务控制 spring的事务控制本质上是通过aop实现的. 在springboot中使用时,可以通过注解@Transactional进行类或者方法级别的事务控制,也可以自己通 ...
- 使用 json 模块,使json数据格式与Python字典dict数据格式互相转换,获取数据更加方便
一.定义 JSON 是一种数据格式 使用 javaScript (Java 死鬼破特)对象表示法 二.特点 1.JSON 与 XML格式数据的区别 ====== 两种格式的数据,都是跨语言,跨平台 c ...
- 困惑我的x++和++x;
刚学习C语言时X++和++X非常不解 目前有了新的领悟 1.X++ int x=0; int z=x++; 此时z?x? 这个问题可以分两步思考 第一步:先把x的值赋予z,此时z=x=0; 第二步:x ...
- 《新标准C++程序设计》4.7-4.9(C++学习笔记17)
一.重载类型强制转换运算符 在C++中,类型的名字(包括类的名字)本身也是一种运算符,即类型强制转换运算符.类型强制转换运算符是单目运算符,也可以被重载,但只能重载为成员函数,不能重载为全局函数.经过 ...
- eshop4-tomcat 安装
1. 下载tomcat 7 2. 解压缩 注意:是否使用sudo 权限执行请根据具体环境来决定 3. sudo vim /etc/profile 在最下方增加 export CATALINA_HOME ...
- POJ 2287 田忌赛马
Tian Ji -- The Horse Racing Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 17699 Acc ...
- Local-Pref(本地优先属性)路由本地优先术
Local-Pref(本地优先属性)路由本地优先术: ①:抓取感兴趣流量——前缀与访问——prefix and access ②:创建路由地图——router-map ③:第一法则——permit 1 ...
- Java Integer Addition Subtration Overflow 整数加减溢出
leetCode有道题Reverse Integer,因为int的最大值为2的31次方减一,最小值为-2的31次方. 我一开始的代码将res递归加放在try中,以为溢出会有异常,然而并没有. 因为出传 ...
- springboot - 映射HTTP Response Status Codes 到 FreeMarker Error页面
1.总览 2.代码 1).pom.xml 这里注意:springboot 2.2.0以后默认的freemarker文件后缀为:ftlh.本例用的是2.2.1,所以后缀为ftlh <depende ...