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

原文链接:链接

语句实现方法】

方法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; (需要考虑越界问题)

扫描二维码关注公众号,回复: 2470195 查看本文章

方法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;

}

猜你喜欢

转载自blog.csdn.net/weixin_42048417/article/details/81259252