走上不归路的第一步-C
来源:互联网 发布:mac安装virtualbox 编辑:程序博客网 时间:2024/04/19 22:34
交换两变量的值的几种方法
1:引用第三个变量来交换
此代码只是为了大概介绍了下如何引用第三个变量来完成两变量值的交换,具体提示以及输出信息未完成。
主要步骤可以分为:
<1>赋值给两个需要交换值的变量;
<2>定义第三个变量tmp 用来放置临时交换的值;
<3>将变量1的值赋给tmp,变量2的值赋给变量1,tmp的值赋给变量1,从而完成交换过 程。
2:不引用第三个变量完成值的交换
此代码段采用了算法思想。
<1>先将两变量的值加起来赋给num1;
<2>将加起来的值减去num2的赋给num2值得出结果其实就是num1的初始值;
<3>讲加起来的值减去上一步中被赋值过的num2得出结果就是num1,完成值得交换。
图式过程如下,num1同理可得
3:运用异或运算完成数值交换
首先先介绍下异或运算符:^ 在 C 里面是按位异或操作符,在二进制表示情况下,同一位相同的话异或的结果就是 0,不同的话就是 1。但是需要注意:任何一位二进制数同 1 异或都会变成另外一个(0 同 1 异或的结果是 1,1 同 1 异或的结果是 0)任何一位二进制数同 0 异或都保持不变(0 同 0 异或的结果是 0,1 同 0 异或的结果是 1)接下来解释下为何可以通过异或运算符完成此过程。
假设a = 101(5)
b = 111(7)
a ^ b = 010(2)
现在来解释为何上面三行核心代码可以完成值的交换:
<1> num1 = num1 ^ num2; //将num1与num2异或的值赋值给num1
<2> num2 = num1 ^ num2; //此时num1 = num1 ^ num2,所以num2 = num1 ^ num2 ^ num2,故此行其实是将num1的值赋给了num2;
<3> num1 = num1 ^ num2; //此时的num1值并没有改变,但是num2的值已经变成了num1,所以num1 = num1 ^ num2 ^ num1,也就是将num2的值赋给了num1; 从而完成了两变量的交换
虽然方法还有很多,但是还是推荐使用第一种,程序可读性高,运用范围广。
- 走上不归路的第一步-C
- 我是如何走上编程的不归路的
- 我是怎样走上建站不归路的
- 走上博客不归路。
- 从此走上不归路
- 走上一条不归路
- 走上研究生之不归路
- 可爱又可恨的Zoomla!逐浪CMS-我是怎样走上建站不归路的
- 《当程序员的那些狗日日子》(二)走上不归路
- 每日产品辣评:打脸上瘾,老罗走上命名颜色的不归路
- 充满希望,走上一条不归路(一)
- 充满希望,走上一条不归路(二)
- 充满希望,走上一条不归路(三)
- 室友带我走上程序“不归路”
- 如何走上PM这条不归路
- 从此走上一条iOS程序猿不归路。。。
- 一不小心走上IT这条不归路
- 2014还有多少外企走上裁员的不归路,而在这些企业工作的员工又在忙什么?
- 数据结构实例<九>(IsHappy 快乐数)容易
- 关于人脸数据库一个很好的下载网站
- 二叉树
- 排座位
- Prufer序列 生成树定理
- 走上不归路的第一步-C
- 【UML】面向过程和面向对象区别的通俗解释
- 1.1jQuery简介
- 【工具类】Android 最有效的隐藏软键盘方法
- Java 8并发工具包漫游指南
- 排列组合 C(n,m)
- react-native-code-push热更新与app版本的关系
- 浅析=======Struts2之==========valueStack
- 215. Kth Largest Element in an Array