#include<iostream>
#include<cmath>
using namespace std;
#define swap0(a,b) \
{ \
int t=a; \
a=b; \
b=t; \
}/*引入第三变量法("\"为连接符,在其后不能有空格或其它字符;用宏定义的方法使得数据交换比函数更有效率)*/
#define swap1(a,b) \
{ \
a=a+b; \
b=a-b; \
a=a-b; \
}/*加减法*/
#define swap2(x,y) \
{ \
x=x^y; \
y=x^y; \
x=x^y; \
}/*异或法(异或运算符,位值相同为0,不同为1) //^(异或)只能对int,char..*/
/*经测试,宏定义里的参数最多用两次,如swap0与swap1里的a,b*/
void swap3(int *a,int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
} /*引入第三变量指针法(若定义中间值*t,需让*t有空间,即指向一个变量)*/
void swap4(int* a,int* b)
{
*a=*a+*b;
*b=*a-*b;
*a=*a-*b;
} /*指针加减法*/
void swap5(int* a,int* b)
{
*a^=*b;
*b^=*a;
*a^=*b;
} /*异或指针法*/
void swap6(int *a,int *b)
{
*a^=*b^=*a;
*b^=*a;
}/*连写的异或指针法*/
int main()
{
int x=9,y=7;
swap(x,y);/*直接调用cmath中的swap函数*/
cout<<x<<" "<<y<<endl<<endl;
return 0;
}