题目本身只考虑整型变量例如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
此算法原理:任意一个数与任意一个给定的数异或两次,其值不变。不过这个算法可读性较差,执行效率不高。
一般情况下我们都是使用第三个变量的方法,代码的可读性更高,执行效率也优于位运算的算法。
标签:变量,int,第三个,011,异或,101,运算 From: https://www.cnblogs.com/cxyo/p/17057902.html