日期:2014-05-20  浏览次数:20781 次

不使用变量实现两个变量的数值转换
int a=3,
  b=4;
b=a+b;

a=b-a;
b=b-a;

请问还有其他方法不?
是不是有个什么临时储存?

------解决方案--------------------
我觉得这办法已经很简单了,还有一个用或运算的。人家说溢出可能是超出精度了。
------解决方案--------------------
a/=2
b/=2

b=a+b; 

a=(b-a)*2; 
b=(b-a)*2; 

这样不会溢出了吧

------解决方案--------------------
四个整数类型的范围
byte -2的7次方 ... 2的7次方-1
short -2的15次方... 2的15次方-1
int -2的31次方 ... 2的31次方-1
long -2的63次方 ... 2的63次方-1

临时存储时采用了一个中间变量,如下
int a=3, 
b=4; 
int temp;//temp 中间变量
temp = a;
a = b;
b = temp;

------解决方案--------------------
int a=3, b=4;
a=a^b;
b=a^b;
a=a^b;
完成交换,此时a=4,b=3
------解决方案--------------------
Java code

int a=3, b=4; 
a=b; 
b=b-b/a;

------解决方案--------------------
探讨
int a=3, b=4;
a=a^b;
b=a^b;
a=a^b;
完成交换,此时a=4,b=3