在C语言中互换两个变量的值而不借助中间变量。
一、算术运算法
代码实现:
#include <stdio.h>
void main()
{
int a = 10, b = 12;
a=b-a; //执行后a=2,b=12
b=b-a; //执行后a=2;b=10
a=b+a; //执行后a=12;b=10
}
解析思路:
将算术的运算过程理解成计算坐标轴上的两个点坐标。
代码执行的三条语句:
-
计算B点到A点之间的距离L,储存在变量a中;
-
计算A点到原点的距离(即原先A点坐标),储存在变量b中,此时完成把a的值传给b;
-
计算B点到原点的距离(即原先B点坐标),储存在变量a中,此时完成把b的值传给a。
二、位运算
代码实现:
#include <stdio.h>
void main()
{
int a = 0x05, b = 0x0C;
a = a^b;
b = a^b;
a = a^b;
}
解析思路:
位运算使用的是XOR(异或)的运算符。对运算中的两个数进行逐bit运算,对于每个bit的运算结果,不同为“1”,相同为“0”。
代码执行的三条语句:
-
计算a和b异或的结果储存在a中;
-
此时a中存的值再与b异或,得到的结果就是最初a的值,储存在b中;
-
最后再用a存的值与b异或,得到的结果就是最初b的值。
更多技术干货分享,敬请关注微信公众号:DigCore
或者扫码关注公众号