黑马程序员技术交流社区

标题: 急急急 int n=3,m=8; 转换成m=3,n=8 ? [打印本页]

作者: abidada    时间: 2015-9-16 18:05
标题: 急急急 int n=3,m=8; 转换成m=3,n=8 ?
方法之一的一个过程如下:

int n=3,m=8;
n=n+m;
m=n-m;
n=n-m;
这个过程没搞懂?有大神跟我解释一下吗?

作者: 洋葱头头    时间: 2015-9-16 19:28
你把n当成 另一个变量temp
作者: panpanpan138    时间: 2015-9-16 20:41
n = n+m // 把n+m的值赋值给n,此时n的值为11
m=n-m  // 把n-m的值赋值给m,注意这里的n是赋值以后的值,也就是m=11-8 m=3
n= n-m  // 同样的道理,此时等号右边的n=11,m=3,所以此时n=11-3 n=8 互换完成

作者: 裘-样    时间: 2015-9-16 21:16
int n=3,m=8;
n=n+m;//n = n+m = 3+8 = 11;
m=n-m;//m = n+m = 11-8 = 3;
n=n-m;//n = n-m = 11-3 = 8;
其实就是说,3和8的和(11),减去3就是8,和减去8就是3;
换言之,n和m的和,减去n就是m,和减去m就是n。
作者: xingzhisuozai    时间: 2015-9-16 21:32
n=n+m;
m=n-m=(n+m)-m=n;
n=n-m=(n+m)-n=m
作者: 哈哈我赢了    时间: 2015-9-16 21:39
int n=3,m=8;
n=n+m;//n=11
m=n-m;//m=11-8=3
n=n-m;/n=11-3=8
作者: MilesMatheson    时间: 2015-9-16 23:50
开发一般不这样用啦
作者: xiaote0225    时间: 2015-9-17 00:16
总结一下:
方法一: 第三方变量
方法二: 加法方式
         a = a + b;
         b = a–b;
         a = a–b;
方法三: ^异或位运算符
方法四: 一句话搞定
        a = (a+b) - (b=a)

作者: zx0210    时间: 2015-9-17 00:28
开发一般用第三方或者亦或运算符
作者: 193936696    时间: 2015-9-17 00:53
异或比较简单高效吧
作者: 凌端浩    时间: 2015-9-17 00:56
xiaote0225 发表于 2015-9-17 00:16
总结一下:
方法一: 第三方变量
方法二: 加法方式

这个好强
作者: lvfx    时间: 2015-9-17 07:21
把每一步执行以后m和n的值写下来就能看懂了,实际上就是要理解给产量赋值
作者: lvfx    时间: 2015-9-17 07:22
lvfx 发表于 2015-9-17 07:21
把每一步执行以后m和n的值写下来就能看懂了,实际上就是要理解给产量赋值 ...

给变量赋值
作者: meihua    时间: 2015-9-17 08:44
一般都用第三方变量吧
作者: Adualtbird    时间: 2015-9-17 08:50
=号是赋值符号,把11赋值给n,m值没变,那么把n-m也就是3赋值给m,再把8赋值给n,就实现了交换
作者: JYcainiao    时间: 2015-9-17 08:58
不是可以用一个容器来转换么,非得加减重新定义吗?
作者: Blue__sky    时间: 2015-9-17 09:29
=号是赋值符号,把11赋值给n,m值没变,那么把n-m也就是3赋值给m,再把8赋值给n
作者: ln0491    时间: 2015-9-17 09:30
变量交换。。。。
作者: silencea    时间: 2015-9-17 09:35
一共有三种,至少掌握一种
作者: 程序猿小哲    时间: 2015-9-17 09:51
直接用临时变量好了呀,至少第一个想法不是楼主的方法...
作者: sxwnzbn    时间: 2015-9-17 10:16
楼上正解
作者: 水果牛牛    时间: 2015-9-17 10:22
你把每一步的n和m的值都写出来,你就懂了
作者: 一个人的朝圣    时间: 2015-9-17 10:26
int n=3,m=8;
temp=n+m;//设置临时变量 temp=3+8=11
m=temp-m;//m=11-8=3,m被赋值为3
n=temp-m;//n=11-3=8,n被赋值为8, 互换结束  楼主这个应该能看懂





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2