您的位置:首页 > 其它

如何实现两个数交换的交换以及宏定义的编写

2014-10-16 12:18 162 查看
【语句实现方法】

方法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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: