不创建临时变量交换两个数的内容之加减法(乘除法)

常规操作

我们在编写C程序时,都知道一般情况下可以创建一个中间变量来实现两个数值的内容交换,代码如下:

#include<stdio.h>
#include<stdlib.h>
int main()
{
 int a = 3, b = 5, t;
 t = a;
 a = b;
 b = t;
 printf("a=%d\nb=%d\n", a, b);
 system("pause");
 return 0;
}

加减法

但是怎么可以不用创建临时变量就可以实现两个数值的内容交换呢?很简单!我们可以用到下面所说的加减法来进行两个数值内容的交换,代码如下:

#include<stdio.h>
#include<stdlib.h>
int main()
{
 int a = 3, b = 5;
 a = a + b;
 b = a - b;
 a = a - b;
 printf("a=%d\nb=%d\n", a, b);
 system("pause");
 return 0;
}

这样通过简单的加减运算之后也能实现两个数值内容的交换,具体怎么实现的呢?我们一步一步分析:
1、我们初始化了a,b的值,并且将a+b的值赋予a
2、再将a-b的值赋予b,注意此时的a的值应该为a+b的值,这样实际上进行的计算为(a+b)-b,这样就把a的值赋予了b
3、最后我们将a-b赋予a,此时的b应为最开始a的值,因为在第二步已经进行了a,b数值的交换,a应该为a+b,所以实际上的计算应该时(a+b)-a,所以此时左值a就与b值互换了,这样通过加减运算就可以进行两个数值的内容互换了!

局限性

如果a,b数值过大会造成数据溢出的状况,同理也可以用乘除法的思想,不过除位上数字为零点几时,显然程序就运行不下去了!

猜你喜欢

转载自blog.csdn.net/qq_40603003/article/details/88596890
今日推荐