只使用两个参数交换两值

由 Toniko 创建, 最后一次修改 2019-07-10

1.使用减法交换两值

int a = 10, b = 12;
a=b-a; //a=2;b=12
b=b-a; //a=2;b=10
a=b+a; //a=10;b=10
//分析:
a = b-a//以记录差为出发点
b = b-(b-a) = a
a = b-(b-a) + b-a = a + b-a

2.使用加法交换两值

int a = 10, b = 12;
a=a+b=22;
b=a-b=10;
a=a-b=12;
//分析:
a = a+b//以记录和为出发点
b = a+b-b = a;
a = a+b - a+b-b = a+b - a;

3.使用按位异或交换两值

int a = 10, b = 12; //a=1010^b=1100;
a=a^b; //a=0110^b=1100;
b=a^b; //a=0110^b=1010;
a=a^b; //a=1100=12;b=1010;
//分析:
a = a^b//原理与记录a、b的和或差相同
b = a^b^b = a//注意:a^b^b = a
a = a^b ^ a^b^b = b//注意:a^b = b^a
以上内容是否对您有帮助:

二维码
建议反馈
二维码