a = a ^ b; b = b ^ a; a = a ^ b; 或: a=a+b; b=a-b; a=a-b
估计是楼主笔记做错了 应该是 a=a+b b=a-b a=a-b
Sorry 最后一行代码打错了 应该是 a=a-b 非常sorry
LZ最后一句 貌似笔误了应该是a = a - b;
a = a ^ b; b = b ^ a; a = a ^ b; 这个不懂 a=a+b; b=a-b; a=a-b 什么方法容易理解,就用谁,呵呵
a=a+b; b=a-b; a=b;//这样最后的a和b的值不还是之前的a的值吗
a = a + b;难道不用考虑一下溢出么?
public class T { public static void main(String[] args) { int a = Integer.MAX_VALUE - 1; int b = Integer.MAX_VALUE - 2; System.out.println(a + " " + b); a = a + b; //此处打印a,确实溢出了 b = a - b; a = a - b; System.out.println(a + " " + b); //执行的结果如下: //2147483646 2147483645 //2147483645 2147483646 //根据这个结果我们就可以认为,溢出不会影响连个变量的交换 } }
a = b + 0*(b=a);
a = b + 0 * (b=a);
楼主的不对a=a+b; b=a-b; a=a-b;
用楼主的方法,反其道而行,a=a-b ;b=a+b;a=b-a ;
我觉得你写得好像不对哦; #include “stdio.h” void main(){ int a=1,b = 2; a = a+b; b = a-b; a = a-b; printf("%d%d",a,b); }
a, b = b, a
楼主可以看看,这个是我去年看到这样的问题的时候写的一点东东!
b = b ^ a;
a = a ^ b; 或:
a=a+b;
b=a-b;
a=a-b
应该是 a=a+b
b=a-b
a=a-b
LZ最后一句 貌似笔误了应该是a = a - b;
b = b ^ a;
a = a ^ b;
这个不懂
a=a+b;
b=a-b;
a=a-b
什么方法容易理解,就用谁,呵呵
b=a-b;
a=b;//这样最后的a和b的值不还是之前的a的值吗
public static void main(String[] args) {
int a = Integer.MAX_VALUE - 1;
int b = Integer.MAX_VALUE - 2;
System.out.println(a + " " + b);
a = a + b;
//此处打印a,确实溢出了
b = a - b;
a = a - b;
System.out.println(a + " " + b);
//执行的结果如下:
//2147483646 2147483645
//2147483645 2147483646
//根据这个结果我们就可以认为,溢出不会影响连个变量的交换
}
}
b=a-b;
a=a-b;
#include “stdio.h”
void main(){
int a=1,b = 2;
a = a+b;
b = a-b;
a = a-b;
printf("%d%d",a,b);
}