不使用第三方变量,交换a和b的值

不使用第三方变量,交换a和b的值

问题描述:

    老师,我想请问下在第二步b=(a^b)^b===>b=a^0===>b=a的时候,既然此时已经将a赋值给了b,为什么下面第三步a=(a^b)^a===>a=0^b===>a=b,还能用‘已经被赋值为a的b’又赋值给a?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

写得有点乱,这里带上下标重新写一下,
交换a1跟b1的值,可以按以下3步:
a2 = a1 ^ b1;  //ab相异,a2记录ab不同的位
b2 = a2 ^ b1; //ab相异,b2记录的是a1
a3 = a2 ^ b2; //ab相异,a3记录的是b1
如果你还是不理解那我把上面的第一步替换到下面
b2 = (a1^b1) ^ b1; //也就是b2 = a1 ^ 0
a3 = (a1^b1) ^ a1; //也就是a3 = b1 ^ 0
因为第一步a2实际上已经包含了(a1^b1)的信息,所以a2再异或b1结果就是a1,a2再异或a1结果就是b1

  • SakuraTAT 提问者 #1

    噢明白了,我之前以为下面三步中第一步的a2和a3是同一个a,现在加上下标就很好理解了。谢谢老师!
    a2 = a1 ^ b1;  //ab相异,a2记录ab不同的位
    b2 = a2 ^ b1; //ab相异,b2记录的是a1
    a3 = a2 ^ b2; //ab相异,a3记录的是b1

    2022-12-09 08:46:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师