交换两个变量的值
通常我们在进行两个变量交换这样的操作时,往往要引入第三个变量,借助第三个变量,交换两个变量的值。这种方法是最为简单的,也是十分容易理解的,代码如下:(这里采用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