a = a + b ;//有越界的风险
b = a - b ;
a = a - b ; 作者: 黄晓东 时间: 2013-9-6 10:55
a=a+b; b=a-b; a=a-b;作者: 杨栋 时间: 2013-9-6 11:15
我有两种方法
1:用异或(好记):n=m^n; m=m^n; n=m^n;
2:(好理解):x=y+(y=x)-x;作者: 焦允 时间: 2013-9-6 11:22
有两种方法:
第一种,上面已经说过类,在这里补充一下,若变量不是byte,short,char型的编译时会报错,因为这三种类型在进行算术运算时,会自动提升为int型,不能再赋值给上面三种类型的变量。
第二种,是通过位运算实现的 一个数异或另外一个数两次仍然是它本身,如下:
int a = 8;
int b = 9;
a = a ^ b;
b = a ^ b;
a = a ^ b;作者: xiaoxu 时间: 2013-9-6 11:22
class Test
{
public static void main(String[] args)
{
int a=8;
int b=9;
System.out.println("a="+a+",b="+b);
//方法一
a=a+b;
b=a-b;
a=a-b;
System.out.println("a="+a+",b="+b);
//方法二
a=a^b;
b=a^b;
a=a^b;
System.out.println("a="+a+",b="+b);
//方法三
a=b+(b=a)*0;
System.out.println("a="+a+",b="+b);
}
}
复制代码
作者: 杨增坤 时间: 2013-9-6 11:32
楼主你好,如果您的问题已经解决,
请把您的问题的未解决更改为已解决!
谢谢合作!
作者: 赵凯 时间: 2013-9-6 11:32
这个一种是用异或,根据通一个数对同一个数异或两次结果不变,还有就是利用第三方元素,由于你这个题要求不润许使用第三个元素,所以用他们的和或差,你那个题定出了值,所以可以使用乘,不能用除,用除取得是整数所以不行,不定义值的话已不能用乘。方法一是:a=a^b,b=b^a,a=a^b;d
第二种:a=a+b,b=a-b,a=a-b; a=a-b;b=a+b;a=a+b 作者: 胡志翔 时间: 2013-9-6 12:34
第一种
int a = 8 ;
int b = 9;
a = a^b;
b = a^b;
a = a^b;
第二种
int a = 8 ;
int b = 9;
a = a+b; //如果a,b值过大,这里容易超出int范围。
b = a-b;
a = a-b;作者: Bad_Boy 时间: 2013-9-6 13:25
用逻辑运算符异或(^):a = a^b;作者: Bad_Boy 时间: 2013-9-6 13:27
逻辑运算符:a = a^b; b = a^b; a = a^b;