JAVA语言关于互换连个变量之间的值,一般都是声明第三方变量来互换;如果不用第三方变量,用两个变量想相加,然后再分别相减求得;
但是采用按位异或方法的时候比如:个
int a=3;
int b=8;
a=a^b;
b=a^b; //b=(a^b)^b(一个数同时异或另外一个数两次等于这个数) => b=a=3
a=a^b; //a=a^(a^b) => a=b=8
System.out.print(a+","+b)
就可以直接输出a=8,b=3。
——但是上面的第三步,a=a^b;的是b在第二步,b=a^b;的时候已经赋值成功为a(3)了,为什么第三步的a=a^b中的b,成为了最初声明的b的值了??
这个JAVA的普通运算逻辑想驳啊??
请大家给小弟我讲讲,谢谢了。
我理解错了,(应该是老师教错了)!!因为忘记第一步a已经等于11了,并不是像老师所说的第二步是 b=a^b^b=3^8^8=3而第二步是b=11^8=3,第三步a=11^8=3了。
没有问题了,被老师误导了。
嘿嘿
ok,这程序简单,自己debug一下就知道结果了。
实践是检验真理的唯一标准。
ps:给个采纳呗。
我理解错了,(应该是老师教错了)!!因为忘记第一步a已经等于11了,并不是像老师所说的第二步是 b=a^b^b=3^8^8=3而第二步是b=11^8=3,第三步a=11^8=3了。
没有问题了,被老师误导了。
你也跟着我想错了呢,嘿嘿