今天在论坛看了一些关于两数交换不通过第三变量的方法,不禁叹为观止,如下所示- static void Main(string[] args)
- {
- int a=5,b=8;
- a=a+b;//第一种方法,通过数学运算
- b=a-b;
- a=a-b;
- Console.WriteLine("此时的a={0},b={1}",a,b);
- a^=b;//第二种方法,通过异或运算
- b^=a;
- a^=b;
- Console.WriteLine("此时的a={0},b={1}", a, b);
- a=b+0*(b=a);//第三种方法。
- Console.WriteLine("此时的a={0},b={1}", a, b);
- Console.ReadKey();
- }
复制代码 这里第一种方法很奇妙,但可以理解,个人认为第二种和第一种方法思路上有异曲同工之妙,异或运算法则中a=b^a^b;和第一种运用a=b+a-b差不多
第三种方法 论坛中也没找到解释,比较疑惑,哪位前辈给指点一下。。
我们在实际运用中一般会选择哪种方式,或者在什么环境下用哪种方式最好??
|