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 cluster 添加/删除节点操作
RedisCluster 添加/删除节点 添加节点新配置两个测试节点8008和9009 [root@--- ~]# /usr/local/redis-/bin/redis-server /u02/re ...
- 解题报告:luogu P2299
题目链接:P2299 Mzc和体委的争夺战 单源最短路板子题吗,体面晦涩难懂(语文不好),以为是有向图,只有\(30pts\),其实是无向的,我使用了刚学来的\(SPFA\),通过了此题: \(Cod ...
- linux 常用文件命令记录
服务开启命令 service 服务 start/stop/stauts 查看ip ifconfig 清屏 clear 显示当前所在位置 pwd 切换目录 cd 查看所有文件(包括隐藏) ls -a ...
- hbase hbck及region RIT处理
hbase hbck主要用来检查hbase集群region的状态以及对有问题的region进行修复. hbase hbck :检查hbase所有表的一致性,如果正常,就会Print OK hbase ...
- Linux下Tomcat带日志启动命令
在Linux环境下,启动Tomcat时我们需要在启动过程中看到日志信息.可以通过下面命令启动Tocmat. ./startup.sh; tailf ../logs/catalina.out或者 ./s ...
- ActiveMQ的安装与配置详情
(1)ActiveMQ的简介 MQ: (message queue) ,消息队列,也就是用来处理消息的,(处理JMS的).主要用于大型企业内部或与企业之间的传递数据信息. ActiveMQ 是Apac ...
- FreeCAD stp文件基于python脚本操作
FreeCAD对于3D模型处理这块的东西封装的还是很完善的,所以移植这块的东西还是有必要的! 首先下载FreeCAD编译好的库: https://www.freecadweb.org/wiki/Dow ...
- 从高通出重拳,iPhone遭禁售看巨头们的专利大战
一直以来,高通看起来都是很有"骨气"的.面对与苹果的专利纷争,高通始终是据理力争.顽强对抗.截至今年6月中旬,高通和苹果打了50多场专利官司,且这些官司分布于6个不同国家的16个司 ...
- 微信群API接口
安卓微信的api,个人微信开发API协议,微信 ipad sdk,微信ipad协议,微信web版接口api,微信网页版接口,微信电脑版sdk,微信开发sdk,微信开发API,微信协议,微信接口文档sd ...
- 洛谷 三月月赛 A
模拟模拟 #include<bits/stdc++.h> using namespace std; inline int ra() { ,f=; char ch=getchar(); ; ...