交换两个int变量的值不能使用第三个变量

题目本身只考虑整型变量例如a = 3,b = 5;

两种思路

方法一:直接运算

int a = 3;
int b = 5;
a = a + b;
b = a - b;
a = a - b;//此时转换完毕 

  由于是整型变量直接运算,缺点比较明显,两个整型变量过大时容易溢出,只能解决部分运算

方法二:异或位运算

int a = 3;//011
int b = 5;//101
a = a^b;  //按位异或结果为110
b = a^b; //101和110异或是011 此时b的值是3
a = a^b; //110和011异或结果为101 此时a的结果为5

  此算法原理:任意一个数与任意一个给定的数异或两次,其值不变。不过这个算法可读性较差,执行效率不高。

一般情况下我们都是使用第三个变量的方法,代码的可读性更高,执行效率也优于位运算的算法。

posted @ 2023-01-17 15:19  青空zsl  阅读(30)  评论(0)    收藏  举报