如何不借助新的变量交换两个变量的值

导读:本篇文章讲解 如何不借助新的变量交换两个变量的值,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

在很多问题的解决中都会遇到——需要交换两个变量的值,这种情况。下面的方法(三变量法)想必是大家常用的吧:

#include<stdio.h>
int main(void){
	int a,b,t;
	scanf("%d%d",&a,&b);
	t=a;
	a=b;
	b=t;
	printf("%d,%d\n",a,b);
	return 0;
}

我们只需要再定义一个新的变量来临时存放一值,就可以完美的解决这一问题了!就像比如说需要将一个醋瓶里的醋装进酱油瓶,而把酱油装进醋瓶。为了解决这个问题我们找来一个空的瓶子,先把醋倒进空瓶子里,再把酱油倒入空了的醋瓶子,再把原来空着的瓶子里装着的醋到进酱油瓶就。这样就万事大吉了。

但是除此之外还有别的途径来调换它们的值吗?答案是肯定的。

这个方法代码如下:

#include<stdio.h>
int main(void){
	int a,b;
	scanf("%d%d",&a,&b);
	a=a+b;
	b=a-b;
	a=a-b;
	printf("%d,%d\n",a,b);
	return 0;
}

这就不太方便用倒酱油来作比喻了。

在顺序结构的程序中,程序是一条一条的执行的。假定我们输入的是a0和b0;在scanf语句执行完后a=a0,b=b0。

执行完a=a+b后a=a0+b0;b=b0;
执行完b=a-b后a=a0+b0;b=a0;
执行完a=a-b后a=b0,b=a0;

这个方法看起来挺不错(少用了一个变量),但实际上很少使用,只有定义了加减法的数据类型才能这样使用。并不推荐大家真正的去使用,只是作为一个方法来介绍,开拓思维。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82682.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!