简单地列一下交换两个变量值地几种方法。

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++交换两个变量值的方法的更多相关文章

  1. 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 ...

  2. C#交换两个变量值的多种写法

    在学习.Net/C#或者任何一门面向对象语言的初期,大家都写过交换两个变量值,通常是通过临时变量来实现.本篇使用多种方式实现两个变量值的交换. 假设int x =1; int y = 2;现在交换两个 ...

  3. JavaScript交换两个变量值的七种解决方案

    前言 这篇文章总结了七种办法来交换a和b的变量值 1 2 var a = 123; var b = 456; 交换变量值方案一 最最最简单的办法就是使用一个临时变量了,不过使用临时变量的方法实在是太l ...

  4. java交换两个变量值a,b的多钟方法

    首先我们定义两个变量用来检查方法可行性 int a=5; int b=3; 方法一,也是最容易想到的,就是建立中间变量法 int temp; temp=a; a=b; b=temp; System.o ...

  5. Python交换两个变量值的函数

    方法1:(错误) def func(a,b): a,b = b,a a = 1 b = 2 func(a,b) print(a," ",b) 方法2:(正确) def func(a ...

  6. 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 ...

  7. ORACLE获取SQL绑定变量值的方法总结

      本文总结一下ORACLE数据库中如何获取SQL绑定变量值的方法,在SQL优化调优过程中,经常会用到这方面的知识点.在此梳理.总结一下,方面日后查找.翻阅. 方法1:查询V$SQL V$SQL视图中 ...

  8. 获取oracle sql语句中绑定变量值的方法

    在诊断 sql的性能问题时,我们有时候须要获取其绑定变量的实际值,然后将此实际值带入到sql语句其中,用原来的sql构成select语句(带where条件),实际的运行一下,看一下选择性怎样. 本文就 ...

  9. 两个变量值交换的方法总结(js,python)

    方法一: 临时变量法 <script> var num1 = 10; var num2 = 20; var temp;//定义临时变量 temp = num1; num1 = num2; ...

随机推荐

  1. 针对phpstudy默认设置的利用

    在phpstudy下载下来以后路径,设置没有修改的情况下可以使用此方法 url:http://ip/phpmyadmin用户名:root 密码:root登入管理界面变量-->general lo ...

  2. oracle根据一张表更新另外一张表

    知道是两张表进行更新,之前作过mysql的,直接就写了: update a,b set a.code = b.code wehre a.id = b.id 然后就报错了,上网查了下知道oracle不能 ...

  3. C# 控件缩写规范

    标准控件缩写规范 类 型 前 缀 示 例 Adrotator adrt adrtTopAd BulletedList blst blstCity Button btn btnSubmit Calend ...

  4. ubuntu18.04下安装oh-my-zsh

    安装 sudo apt-get install zsh wget --no-check-certificate https://github.com/robbyrussell/oh-my-zsh/ra ...

  5. getchar、scanf以及缓冲区的概念

      1.getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了.       getch()和getche( ...

  6. printf的封装与实现

    1 UART通信协议 1.1 UART通信的物理连接 图1 UART的物理连接 1.2 逻辑电平 用电平表示逻辑1和逻辑0,逻辑1和逻辑0用来组织计算机层面的数据. 1.3 电平标准 根据通讯使用的电 ...

  7. 索尼研发的新主机竟兼容现款PSVR!

    索尼PlayStation研发负责人Dominic Mallinson在接受媒体记者采访时表示,现款PSVR头戴式虚拟现实装置可用于下一代PS主机. 新主机兼容现款PSVR 而且,即便新主机上市也不要 ...

  8. jenkins打包iOS 报错:error: exportArchive: The data couldn’t be read because it isn’t in the correct format.

    在执行ios 打包的时候,我们通过执行下面的指令来打包ipa: mkdir arch archive_path=arch/${app_name}.xcarchive workspace_name=HP ...

  9. Biu一Biu--GDB

    gcc常见编译选项 ** -c **:只激活预处理.编译和汇编,也就是生成obj文件 ** -S **:只激活处理和编译,把文件编译成汇编代码 ** -o **:定制目标名称,缺省的时候编译出来的可执 ...

  10. 七十五、SAP中数据库的使用SQL

    一.在SAP中可以使用两张数据库,一直是NativeSQL和OPEN SQL. Native SQL(本地SQL)特点: 1.每种关系型数据库都有其对应的  SQL,是数据库相关的. 2.不同的 SA ...