【C语言】互换两个变量的值而不借助其它变量

在C语言中互换两个变量的值而不借助中间变量。

 

一、算术运算法

 

代码实现:

#include

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

}

 

解析思路:

    将算术的运算过程理解成计算坐标轴上的两个点坐标。

    

【C语言】互换两个变量的值而不借助其它变量_第1张图片

    代码执行的三条语句:

  1. 计算B点到A点之间的距离L,储存在变量a中;

  2. 计算A点到原点的距离(即原先A点坐标),储存在变量b中,此时完成把a的值传给b;

  3. 计算B点到原点的距离(即原先B点坐标),储存在变量a中,此时完成把b的值传给a。

 

 

二、位运算

 

代码实现:

#include

void main()

{

    int a = 0x05, b = 0x0C;

    a = a^b;

    b = a^b;

    a = a^b;

}

解析思路:

    位运算使用的是XOR(异或)的运算符。对运算中的两个数进行逐bit运算,对于每个bit的运算结果,不同为“1”,相同为“0”。

【C语言】互换两个变量的值而不借助其它变量_第2张图片

    代码执行的三条语句:

  1. 计算a和b异或的结果储存在a中;

  2. 此时a中存的值再与b异或,得到的结果就是最初a的值,储存在b中;

  3. 最后再用a存的值与b异或,得到的结果就是最初b的值。


 

 

更多技术干货分享,敬请关注微信公众号:DigCore

或者扫码关注公众号

【C语言】互换两个变量的值而不借助其它变量_第3张图片

你可能感兴趣的:(C语言,C/C,编程,-,C/C++)