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

原文链接:链接

语句实现方法】

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

}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值