以此为例:
int a = 1;
int b = 2;
如何将两个变量的值进行互换?
方法一:采用一个中间变量空间
int c = a;
a = b;
b = c;
- 好处是比较容易理解,值也不会出问题;并且应用最广泛,可以交换任意两个变量值(不仅仅是数值)
- 不好在于产生一个新的内存空间
方式二:使用算数运算符(+ -)
a = a + b; //a空间存储的是两个元素之和 a==3 b没有变化 b==2
b = a - b; //利用两个元素的和减原来的b,剩下是原来的a ,赋值给b b==1 a==3
a = a - b; //利用a空间两个元素的和,减去原来的a,剩下是原来的b,赋值给a a==2 b==1
- 好处是省略了一个新的空间
- 不好在于 1.相对第一个来讲不是很容易理解 2.可能会在+产生值越界
方式三:使用位运算符(^)
a = a^b; //a==异或中间值 b==2
b = a^b; //a==异或中间值 b==1
a = a^b; //a==2 b==1
一个数字 异或 同一个数字两次,值不会改变
看一个例子:
1^2
001
010
011 == 3
3^2
011
010
001 == 1
很明显:
1^2^2 == 1