不用中间值交换a,b的值

两种方法:

1. 加减

    a = a + b;
    b = a - b;
    a = a - b;

2. 异或(位)运算

a = a^b;
b = a^b;//此时b = a^b^b,因此b = a(交换前的a与b)
a = a^b;//此时相当于a^b^a,由异或的交换律得a = b ^a ^a,因此a = b(交换前的a与b)

原理:异或运算的自反性与交换律。

  a ^b ^b = a,a ^b ^a = b ^a ^a = b

但是位运算只能在整型数值之间进行,这是此方法的局限性。

posted @ 2021-03-08 23:17  zjcfrancis  阅读(103)  评论(0编辑  收藏  举报