如何交换两个变量的值

交换两个变量的值

通常我们在进行两个变量交换这样的操作时,往往要引入第三个变量,借助第三个变量,交换两个变量的值。这种方法是最为简单的,也是十分容易理解的,代码如下:(这里采用c++的形式表现,与其他编程语言道理相同)


#include <iostream>
using namespace std;

int main() {
	int a = 12;
	int b = 24;
	int t = a;
	cout<<"a = "<<a<<endl;
	cout<<"b = "<<b<<endl;
	a = b;
	b = t;
	cout<<"交换后 "<<endl;
	cout<<"a = "<<a<<endl;
	cout<<"b = "<<b<<endl;
	return 0;
}

在这里,我们可以轻易地发现,通过以上代码,实现了 a、b 两个变量的交换,不知道你看懂了吗?

之后我们也可以采取不定义其他临时变量的方式来交换两个变量,例如下面将要展示的通过加减法交换变量值的方法,代码如下:

#include <iostream>
using namespace std;

int main() {
	int a = 12;
	int b = 24;
	cout<<"a = "<<a<<endl;
	cout<<"b = "<<b<<endl;
	a = a + b;
	b = a - b;
	a = a - b;
	cout<<"交换后:"<<endl;
	cout<<"a = "<<a<<endl;
	cout<<"b = "<<b<<endl;
	return 0;
}

上面的代码通过将 a+b 赋值给 a ,a 的值就变成了 a+b ,减去 b 得到了之前为赋值的 a 的值。将其赋给 b ,这样就完成了 b 到 a 值的转变,现在的 a 减去 b 就得到了一开始的 b 得值,最后将其赋值给 a ,就没有定义新的临时变量完成了两变量值的交换。

同理,我们还可以通过乘除完成该操作,但是在实际操作中,有时我们会遇到两个变量数值过大,加在一起或者乘在一起会有越界的现象,而用乘除,也要避免除数为零的情况,这时我们就需要改变方法。

此时,我们还可以通过异或运算符来进行不定义新变量交换两变量的操作,代码如下:

#include <iostream>
using namespace std;

int main() {
	int a = 35;
	int b = 87;
	cout<<"a = "<<a<<endl;
	cout<<"b = "<<b<<endl;
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	cout<<"交换后:"<<endl;
	cout<<"a = "<<a<<endl;
	cout<<"b = "<<b<<endl;
	return 0;
}

我们可以看到在上面的代码中,我们通过异或运算符完成了变量值的交换。

在这里,异或的理解和上面加减的理解方式是差不多的。把 a ^ b 的值赋给 a ,这样 b=a ^ b 中就相当于原来的a ^ b ^ b,这样 a 的值就赋给了 b;同样的道理,在下一步中 a=a ^ b 就相当于原来的a ^ b ^ a,这样 b 的值就赋给了 a ;这样也能达到数值的交换,并且没有过多的局限性。

但是通常我们在实际操作中,不会使用到后面的两种做法,因为这样程序编译时会较为繁琐,并没有定义新的变量来的快捷和便利。

20190123

猜你喜欢

转载自blog.csdn.net/qq_42440161/article/details/86619146