访问计数 6950 (自2016年5月)
11841?1489719724
发帖时间:04/05/2016 15:50
更新时间:05/11/2016 23:20

变量A、B的值互换,有同学提到还有这种方法:A^=B^=A^=B;

这样确实能够实现,原因如下:

A^=B^=A^=B;等价于如下语句:

{

    A=A^B;

    B=B^A;

    A=A^B;

}

用A和B的原始值替换上述等式右边的值,上面的语句可以合并为两条独立的语句(并列,用于计算A、B的值,但不能顺序执行):

B=B^(A^B) ;和 A=(A^B)^(B^(A^B));

再考虑异或计算的运算法则(见http://baike.baidu.com/view/674171.htm),可以得到上面两个并列的语句就相当B=A;和A=B;

回复 ︿ (3)
  • 用户头像
    刘翔宇 3年前
    YoungS 写到:
    @刘翔宇(liuxiangyu)‍ 
    谢谢教员,明白是怎样个原理了。

  • 用户头像
    杨绍武 3年前
    这个方法的问题是只适合于整型数的交换,不具有一般性。

  • 用户头像
0?1470885445
登录后可添加回复