交换两变量a和b

int a,b;

现在要交换a和b


最普通方法:

 int temp;

temp = a;

a = b;

b = temp;


如果要求不使用临时变量

方法一:加减法(缺点:a+b可能越界)

a = a + b;

b = a - b;// b = (a+b) - b = a

a = a - b;// a = (a+b) - a = b

方法二:异或

a ^= b;
b ^= a; // b = (a
^b)^b = a
a ^= b; // a = (a^b) ^ a= b

以上方法如果要求只用一行代码:    a -= (b = (a += b) - b); 或者    a ^=(b ^= (a ^= b));


其他:例如

int i = 6;
            int j = 12;
            i = (j - i) + (j = i);

也可以实现交换,只是这里需要注意的是该表达式看起来只是声明两个变量。实际上里面包含了一个隐含的变量 (j-i)。



其他交换例如指针互换请参考:http://www.cnblogs.com/taoqianbao/archive/2011/09/21/2184315.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值