不使用第三方变量交换两个变量值的三种方法

不写具体的程序了, 呵呵.

 

1, 偷鸡摸狗, 呵呵, python中提供这种交换语法, 直接a, b = b, a就可以了

 

 

2. 字符串连接, 数值算术运算保留对方值.

 

a = 3

b = 4

a = a + b  这里, 我们把b的值保留到了a变量中, 由于b的值没有改变, 因此可以获取到a的值.

b = a - b  好了, 相当于b = (a + b) - a, 那么b 就等于a了

a = a - b 此时, b值是a原来的值, 那么结果什么可向而知了.

 

对于字符串做这种交换的话, 可以使用字符串连接和substr的方式来做, 建议在追加字符串的时候, insert到那个字符串的最前面, 防止其中一个字符串是另一个字符串的子串导致错误..

 

3. 位操作, 异或

 

a = 2

b = 3

a = a ^ b

b = a ^ b

a = a ^ b

 

异或操作, 对每一位而言, 0可以取得原数, 1可以取得该位的补码.

第一次异或, 用0填充了相同的位, 用1填充了不同的位.

第二次异或, 操作数b和第一次结果做异或, 第一次的结果用0(那些相同的位)取得了b自己的值(由于这些位相同), 而第一次结果是1的那些位, 则取得了操作数b的该位的补码, 这些位的值是不同的, 因此, 操作数b中该位的补码, 实际上就是操作数a中的原码.

这样, 第二次的异或中, 将第一个操作数a中的所有位就都覆盖到了操作数b中, 完成了将a赋值给b句柄的工作.

第三次异或, 原理和第二次一样, 将b赋值给a句柄.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值