#include <iostream>
using namespace std;
void Switch(int *p1, int *p2) {
*p1 = *p1 + *p2;
*p2 = *p1 - *p2;
*p1 = *p1 - *p2;
}
void Xor(int *p1, int *p2) {
*p1 = *p1^*p2;//异或操作
*p2 = *p1^*p2;
*p1 = *p1^*p2;
}
int main() {
int a = 1,b = 2;
int *p1 = &a;
int *p2 = &b;
cout << "p1:" << *p1 << endl;
cout << "p2:" << *p2 << endl;
Switch(p1,p2);
cout << "p1:" << *p1 << endl;
cout << "p2:" << *p2 << endl;
Xor(p1, p2);
cout << "p1:" << *p1 << endl;
cout << "p2:" << *p2 << endl;
}
方法一有缺陷:相加和可能存在溢出情况