首先,a=a^b; // (10^20)算出a的结果为二进制11110,也就是10进制的30.
接着,b=a^b // a连续两次^同一个数(30^20),算出结果为10,赋予了b,也就是10
最后,a=a^b // a^b也就是(30^10),和上面的那个值已经不一样了,最终的结果是20.作者: 淮阴少年 时间: 2015-3-6 21:27
b = a ^ b; //a ^ b ^ b = a
a //a ^ b ^ a = b
b已经变a 那是不是表示 b已经 是10
那第二行 a = a ^ b; //a ^ b ^ a = b 不是也是10?
不是很懂作者: 小田 时间: 2015-3-6 22:10
a=a+b;
b=a+b-b;
a=a-b;
System.out.println("a:"+a+",b:"+b);
System.out.println("------------");作者: 小田 时间: 2015-3-6 22:12
a=a+b;
b=a-b;
a=a-b;
System.out.println("a:"+a+",b:"+b);
System.out.println("------------");作者: zailushang326 时间: 2015-3-6 23:14
a=a^b
根据异或规则a=30
b = a ^ b; //a ^ b ^ b = a
b变成10
a=a^b//(a^b)^a=b
a=20
a与b交换作者: 金康俊 时间: 2015-3-7 10:44
a=a^b;
b=a^b;//这里^后面的b值是20
a=a^b;//这里的b的值是10作者: 淮阴少年 时间: 2015-3-7 19:28