不使用中间变量交换两个变量的值
方法1:
view sourceprint?1 int a = 1;
2 int b = 2;
3
4 //交换
5 a = a + b;
6 b = a - b;
7 a = a - b;
8
9 Console.WriteLine("a={0} b={1}", a, b);
方法2:
view sourceprint?1 int a = 1;
2 int b = 2;
3
4 //交换
5 a=a^b;
6 b=b^a;
7 a=a^b;
8
9 Console.WriteLine("a={0} b={1}", a, b);
证明:
a1=a0^b0;
b1=b0^a1=b0^(a0^b0)=a0^b0^b0=a0;
a2=a1^b1=(a0^b0)^a0=b0^a0^a0=b0;
原理:
一个值经过同一个数的两次异或后值不变。