黑马程序员技术交流社区

标题: 有多种方法对两个整数变量进行互换(不使用第三方变量) [打印本页]

作者: 到处玩的    时间: 2014-8-8 13:14
标题: 有多种方法对两个整数变量进行互换(不使用第三方变量)
如题,我找到的两种方法如下,那么还有其他方法吗?


第一种方法:异或的方式
1,我们知道一个数异或另一个数2次,结果还是这个数。举例:2^3^3=2.这个大家明白吧,应该没问题.同样,3^2^3=2,其实我只是把顺序换了下位置,这个都不难理解.
2, 题目中不是说两个整数变量吗?那么我们就设两个整数变量.比如: int x = 2; int y = 3;现在我们就把这两个数用异或的方法进行数值换位.
3,由于我们人的思想习惯是xy的顺序,那么我们就先来换位x,于是有:
         x = x^y;//此时x=2^3.这时再算出y,于是有
         y = x^y;//相当于2^3^3=2,这时的y=2,我们完成了一个换位.于是开始换x.
        此时x^y=2^3^2=3,那么我们就把这个值赋给x,那么就是
         x = x^y;//相当于2^3^2=3.这时x=3;


第二种方法:利用数学技巧
a=a+b;
b=a-b;
a=a-b;  





作者: ┣┫流枫    时间: 2014-8-8 13:47
老毕的视频里都有啊   你这两种 就是老毕说的哪两种  第二种有局限性,数过大可能会溢出哦
作者: 到处玩的    时间: 2014-8-8 14:53
┣┫流枫 发表于 2014-8-8 13:47
老毕的视频里都有啊   你这两种 就是老毕说的哪两种  第二种有局限性,数过大可能会溢出哦 ...

是啊,那么还有其他方法吗?
作者: 阳光的嘉主角    时间: 2014-8-8 15:28
int x = 5;
int y = 6;
x = y + ( 0*(y =x));

作者: zhangxun    时间: 2014-8-8 15:28
除了视频里有的,其他的还有吗
作者: 阳光的嘉主角    时间: 2014-8-8 15:29
这种怎样? 很爽的




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