关于数值交换的几种方法
作者:华清远见讲师 在大量的开发中常常会遇到需要交换两个数值的问题,今天就给大家分享一些数值交换方面的方法: 第一种方法: 这也是大家最容易想到的方法,即利用中间变量达到交换两个数的目的,具体如下: int tmp; tmp = i1; i1 = i2; i2 = tmp; 这种方法执行效率是最低了 第二种方法: 利用数学中的运算技巧: i1 = i1 + i2; i2 = i1 - i2; i1 = i1 - i2; 这样也可以实现两个数的交换 第三种方法: 则是利用位运算中的异或来实现数据交换 i1 = i1 ^ i2; i2 = i1 ^ i2; i1 = i1 ^ i2; 这种方式的执行效率相对来说比较高。 源代码如下: #include void swap1(int i1,int i2) { int tmp; tmp = i1; i1 = i2; i2 = tmp; } void swap2(int i1,int i2) { i1 = i1 + i2; i2 = i1 - i2; i1 = i1 - i2; } void swap3(int i1,int i2) { i1 = i1 ^ i2; i2 = i1 ^ i2; i1 = i1 ^ i2; } int main(void) { int i,j; i = 3; j = 5; swap1(i,j); printf("i = %d,j = %dn",i,j); i = 6; j = 8; swap1(i,j); i = 2; j = 7; swap1(i,j); return 0; } 执行结果: 文章选自华清远见嵌入式培训 >>>更多优秀技术博文每日更新 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- [VB.NET]Unable to start debugging. The debugger is not
- vb.net和c#.net转换之区别
- delphi – 从Windows任务栏中删除firemonkey
- Thinking in BigData(二)大数据时代下的变革
- mybatis关于ORM的使用以及设计(二)[DaoInterface 转换 Mapp
- vb.net – Winform消息框中的可点击的URL?
- Perl Learning (3_2) —— 标量上下文与列表上下文
- 我的程序如何判断Delphi是否正在运行?
- 只有lua才能编译出小于200K的代码吗?NO! Python 也可以。
- lua遍历文件夹