01-C语言不用第三个变量交换两个变量的值

a^=b;
b^=a;
a^=b;
//三行代码,为什么要写,因为可能面试的时候会简单问一句

例如:

a = 5,二进制为101

b = 3,二进制为011

异或表示a的整数位与b的整数位信息的所有不同信息

step 1  :求出两个数字哪些位不一样,这里是第一和第二位不同

a = a^b;  101^011 = 110   a = 6 

step 2 :b的值还没发生改变,那么b的每一位是确定的,原始的a和b的那些位不同,也是确定的,这个时候异或就得到与b相反的“a”值,即交换的值

b = a^b;  110^011 = 101   b=5;交换成功

step 3:同上一步,知道原始值,知道哪些位不同,那么不同的位0换成1、1换成0,就能得到未知的值

a = a^b;  110^101 = 011   a=3;交换成功

猜你喜欢

转载自blog.csdn.net/qq_39883358/article/details/84672378