不使用中间变量交换两个变量的值-异或

2023-06-10  本文已影响0人  一个半吊子工程师
void exchangeWithXor(int a,int b){
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
}

异或运算,相同为 0 相异为 1

//定义a, b
int a = 1, b = 2;
// a = 0001 , b = 0010
a = a ^ b;  // a = 0001 ^ 0010 = 0011
b = a ^ b;  // b = 0011 ^ 0010 = 0001
a = a ^ b;  //  a = 0011 ^ 0001 = 0010
//简写的话是这样
//a ^= b;
//b ^= a;
//a ^= b;
//即 a = a ^ b 等价于 a ^= b

附:

void exchangeWithPlus(int a,int b){
        a = a + b;
        b = a - b;
        a = a - b;
}
上一篇 下一篇

猜你喜欢

热点阅读