位运算:
#include<stdio.h>
int main(){
int a = 1;
int b = 2;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("%d %d",a,b);
}
解释一下为什么:
假设a的初始值为a0,b的初始值为b0:
int a = a0;
int b = b0;
a = a ^ b; // a = a0 ^ b0,b = b0;
b = a ^ b; // a = a0 ^ b0,b = a0 ^ b0 ^ b0 = a0;
a = a ^ b; // a = a0 ^ b0 ^ a0 = b0 ; b0 = a0;
其实利用了两条原理:
1. 一个数和自己异或得到0。
2. 一个数和0异或得到自己。