黑马程序员技术交流社区
标题:
变量问题
[打印本页]
作者:
许万里
时间:
2013-3-9 08:49
标题:
变量问题
怎么才可以 不借助第三方 变量来交换两个变量的值。?
作者:
张洪慊
时间:
2013-3-9 09:07
用^(异或)
假设有两个变量a,b (b^a^a=b)
a=a^b;(令a^b等于c)
b=a^b;(此时相当于b=(c^b-->a^b^b-->a) )
a=a^b;(a^a,但第一个a是a^b,相当于a^b^a-->b)-->a=b
以上完成交换.
作者:
李晓泉
时间:
2013-3-9 09:10
如果是int类型的变量,可以通过计算重复赋值交换变量
int a =10;
int b=5;
a=a-b;//此时a=5;
b=a+b;//此时b=10;
作者:
罗志强
时间:
2013-3-9 09:15
算术运算法
a=10;
b=20;
a=a+b;(a=30)
b=a-b;(b=10)
a=a-b(a=20);
作者:
郝滨
时间:
2013-3-9 09:49
就是两个数相加 然后再分别减去
x=x+y;
y=x-y;
x=x-y;
如果没有特殊值 乘除 乘方开方 都ok的
x=x*y;
y=x/y;
x=x/y;
作者:
张卫刚
时间:
2013-3-9 10:50
不借助第三方 变量来交换两个变量:
int n=3;m=8;
n=n^m;
m=n^m;//相当于(n^m)^m
n=n^m;//相当于n^(n^m)
n=n+m;//这种方式有局限性,如果两个数较大相加就超出int范围了,容易损失精度
m=n-m;
n=n-m
作者:
yhnan
时间:
2013-3-9 11:07
我的方法也是异或'^'
原理是:一个数'^'一个数两次还是原来的数。
如 int x,y;
x=x^y;//(这个随便,用y也可以。但下边等号之前也要改)
y=x^y;//(因为之前设定x=x^y,这步就相当于y=x^y^y。x异或2个y,还是x。则y=x)
x=x^y;//(原理同上,之前设定y=x^y,这步的意思就是x=x^x^y。y异或了2个x,还是y。则x=y)
作者:
程天贤
时间:
2013-3-11 13:20
//定义两个int类型的变量如:a和b分别赋值为10和5,
//不借助第三方变量写程序交换两个变量的值。
static void Main(string[] args)
{
Console.WriteLine("开始a=10,b=5");
int a = 10;
int b = 5;
a = a - b;//a=5,b=5
b = a + b;//b=10,a=5;
Console.WriteLine("交换后a={0},b={1}",a,b);
Console.ReadKey();
}
作者:
宋健
时间:
2013-3-11 19:19
数学算法:
n1 = n1 - n2;
n2 = n1 + n2;
n1 = n2 - n1;
以上,请参考
作者:
边亮
时间:
2013-3-11 21:01
a=3,b=5;
a=a-b;//-2
b=a+b//3
a=b-a//5
纯粹的数学运算 到时候举个例子就出来了 不用死记得
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2