假如a=20,b=30,怎么不通过中间变量从而交换两个数呢?代码如下:
void swap(int& a, int& b) { //注意,这里是引用
a^=b;
b^=a;
a^=b;
}
需要注意的一点是,实参a和b不能为同一个数,否则a和b的值将会为0。例如:
int a = 20;
swap(a, a);
cout << a << endl; //swap之后,a的值将为0
假如a=20,b=30,怎么不通过中间变量从而交换两个数呢?代码如下:
void swap(int& a, int& b) { //注意,这里是引用
a^=b;
b^=a;
a^=b;
}
int a = 20;
swap(a, a);
cout << a << endl; //swap之后,a的值将为0