a+=b,b=a-b,a-=b;实现了a 、b的交换么?
我怎么没有看出来呢
如果写的菜一点的话是不是可以写成如下:a=a+b; b=a-b=(a+b)-b=a; a=a-b=(a+b)-b=a????
最后一个a 的值不还是原来的值么?
小弟愚昧,还请不吝赐教!
----------------解决方案--------------------------------------------------------
因为第3个语句再第2个语句后面运行
所以可以实现交换
----------------解决方案--------------------------------------------------------
第三个表达式的具体转化过程:a-=b??
----------------解决方案--------------------------------------------------------
在第3个表达式调用时b已经和初使条件的a相等
而这时的a和a+b的值是一样的a-=b就是说a=(a+b)-(a)=b
这样做就是在调换a,b时少用了一个参数
----------------解决方案--------------------------------------------------------
这个问题不用讨论,两个数交换不建议使用这个方法。
利用第三方空间才是正确。
如下:
a=a^b;b=a^b;a=a^b;
a=a*b;b=a/b;a=a/b;
。。。。。。
都是在一定的条件下才成立的。
----------------解决方案--------------------------------------------------------
谢谢啊[
em01]
----------------解决方案--------------------------------------------------------
两个数交换也可以用这种方法啊,这样写
a-=b;
b+=a;
a=b-a;
----------------解决方案--------------------------------------------------------
谢谢! 不过这样实在是有些费力不讨好,在真正写程序的时候还是不要用这样的方法。
我看这些的收获是对变量值的变化有了更清楚的了解。
还是谢谢楼上的兄长!
----------------解决方案--------------------------------------------------------
这个问题不用讨论,两个数交换不建议使用这个方法。
利用第三方空间才是正确。
如下:
a=a^b;b=a^b;a=a^b;
a=a*b;b=a/b;a=a/b;
。。。。。。
都是在一定的条件下才成立的。
这个显然有限制条件B=0就不行了 ,但a=a+b;b=a-b;a=a-b;应当适合任何情况
----------------解决方案--------------------------------------------------------
建议大家不要在对这样的问题讨论不休了; 谢谢大家的帮助。
用另外一个变量可以的解决的很简单问题,我们还是不要弄出个别人要看上半天才明白的东西, 我们写东西很重要的一条原则就是:可读性强
----------------解决方案--------------------------------------------------------