【语句实现方法】
方法1:不使用中间变量
●利用位运算符
a = a^b; b = a^b; a = a^b; → a^= b^ = a^ = b;(不用考虑越界问题)
【解释】:对于a^a =0, a^0 =a
a = a^b
b = a^b =( a^b) ^b =a^(b ^b) = a^0 = a(交换律)
a = a^b = (a^b) ^a = a^a^b = b; (结合律,并且有a = a^b,a = b)
●不使用位运算符
a= a + b; b = a - b;a = a – b; (需要考虑越界问题)
方法2:使用中间变量
temp= a; a = b; b = temp;
【宏定义方法】
方法1:
#define SWAP(a,b) \
a= a^b;\
b= a^b;\
a= a^b;
方法2:
#define SWAP(a,b) \
a= a + b ;\
b= a - b;\
a= a - b;
【函数实现方法】
方法1:利用指针
intswap(int *p,int*q)
{
int temp;
temp = *p;
*p = *q;
*q = temp;
}
方法2:利用引用
intswap(int &a,int&b)
{
int temp;
temp = a;
a = b;
b = temp;
}