0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

变量数值交换的三种方法

有a,b两个变量交换他们两个的数值,最基本的做法就是就是找个中间变量进行暂时保存,就像有两个水杯,分别装了a,b毫升的水交换两个水杯中的水量最简单的办法就是找个中间杯子c先把一个杯子(假设为a)中的水暂存在里面。然后把b杯子的水倒到杯子a里面。c倒到a里面。类于此,交换a,b两个变量里面的值,那么就可以找个中间变量c暂存一下:c= a;a = b;b = c;虽然这样也完成了任务,但是却多用了一个变量。那么没有第三个变量应该怎么做呢,那么这是就出现经常用的方法就是:    a = a+b;    b = a- b;    a = a - b;这样就省去了中间变量实现了两个变量值的交换。今天突然之间想到了第三种做法:a = a xor b;b = a xor b;a = a  xor b;用C语言来写:a ^= b;b ^= a;a ^= b;优于上面第二种方法的地方就是不会出现溢出的现象,快速,谁都直到计算机执行位运算是最快的。当然第三种方法能用是因为异或运算符满足结合律和交换律。


提问者:MAZHILEI 地点:- 浏览次数:2383 提问时间:07-09 13:51
我有更好的答案
提 交
3条回答
hu_wflllllllg21 07-09 23:11
已阅.........................................
Peterlt 07-17 15:37
《高效编程的奥秘》这书已经写的很清楚了,建议楼猪找来看看。
oduwqoiud 07-13 23:47


第一种最可靠,第二、三种某些情况下不适用。现在计算机超快,编程首先考虑的是可靠与可维护,效率倒是次要
撰写答案
提 交
1 / 3
1 / 3