如何优雅的交换两个数的值? 按位异或

 

如何优雅的交换两个变量的值?

中间变量

1 int a = 10;
2 int b = 21;
3 //     使用中间变量
4 int t = a;
5 a = b;
6 b = t;
7 
8 // a 与 b 的值已经交换

 

这种属于常规思路,但是好像不够优雅。

不使用中间变量

1 int a = 10;
2 int b = 21;
3 //     不使用中间变量
4 a = a + b;
5 b = a - b;
6 a = a - b;
7 
8 // a 与 b 的值已经交换

 

这种貌似比上一种解法优雅一点,但是感觉还差点什么

按位异或

1 int a = 10;
2 int b = 21;
3 //     按位异或
4 a = a ^ b;
5 b = a ^ b;
6 a = a ^ b;
7 
8 // a 与 b 的值已经交换

 

这种方法可能看不明白, 自己试一下看看。

那种方式最优雅?自己做决定吧。

楠少博客同步更新 :https://blog.nanshaobit.top/90

posted @ 2019-11-22 08:47  楠少科技  阅读(288)  评论(0编辑  收藏  举报