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; ...
随机推荐
- Redis——进阶
redis的持久化 redis提供两种备份方式,一种是RDB 一种是AOFRDB默认开启.关闭注释掉所有的save,存储的是redis 具体的值,会压缩存储.AOF配置文件中appendonly ye ...
- SpringBoot#ConfigurationProperties注解相关的一些知识
用途:ConfigurationProperties注解,用于在spring环境定义bean的时候.通过这个注解,把配置文件中的相关属性注入到实例化的bean中. 原理:spring中bean的生命周 ...
- 009、Java中超过了int的最大值或最小值的结果
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- ROS-1 : Ubuntu16.04中安装ROS Kinetic
1.安装 ROS Kinetic仅支持Wily(Ubuntu 15.10).Xenial( Ubuntu16.04)和Jessie(Debian 8)的debian软件包. 1.1 配置Ubuntu ...
- MQTT 协议学习:008-在STM32上移植MQTT
前言 通过前面了解MQTT有关概念.分析了有关的报文,我们对于这个协议也有了更深的认识.但纸上谈来终觉浅,绝知此事要躬行. 本文参考:<STM32+W5500+MQTT+Android实现远程数 ...
- JQuery 动画实现
$(this.div_wrong).show().css({width:"0px", height:"0px"}) .animate({width:&qu ...
- SQL语句中为什么要用 where 1=1
where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句,1=1 是永恒成立的,意思无条件的,也就是说在SQL语句中有没有这个1=1都可以. 如:web界面查 ...
- 096-PHP循环使用next取数组元素
<?php function return_item($arr,$num=0){ //定义函数 for($i=0;$i<$num;$i++){ //循环向前移动数组指针 next($arr ...
- opencv人脸检测
找了一张自己喜欢的<超人前传>剧照 其中的xml分类器需要到https://github.com/opencv/opencv/tree/master/data/haarcascades去下 ...
- CF1141D Colored Boots
There are n left boots and n right boots. Each boot has a color which is denoted as a lowercase Lati ...