swap:

在oi中,swap用于交换两个变量的数值。

初学oi时,我们这样操作:

也就是说,需要一个temp变量来寄存x或y的值,因为当一个变量被赋值成为另一个变量时,没有temp它的值会丢失。

貌似很基础的亚子。

进阶版:

进阶版swap不在需要中间变量temp,常数也更优:

具体是这样的:

int sswap(int &x, int &y)
{
x ^= y ^= x ^= y ;
}

原理:一个数经过两次异或后,等于自己:

实在不理解手动膜你啦。

于是我们把上面的式子疯狂展开:

还不理解的话:

这里temp就是第一步x^y的值,把他们不同的部分作为中间变量,从而在上方第3,4行分别以第一步的x值为temp异或出自己的值。

完结。

/滑稽/

最新文章

  1. psql-03数据类型(1)
  2. UNION并集运算
  3. Python - 利用pip管理包
  4. glut编译问题 (程序无法运行)
  5. 【Hibernate】--一对一关联、联合主键
  6. 异步提交form的时候利用jQuery validate实现表单验证
  7. matlab里plot设置线形和颜色
  8. UUID错误
  9. Unity 读取资源(图片)
  10. java游戏开发杂谈 - 画布和画笔
  11. Linux 三剑客(Awk、Sed、Grep)
  12. 关于TypeError: strptime() argument 1 must be str, not bytes解析
  13. PTA——天平找小球
  14. 如何正确获取MYSQL的ADO连接字符串
  15. Vue.js hello world
  16. (线段树)敌兵布阵--hdu--1166 (入门)
  17. TCAM CAM 说明 原理 结构 Verilog 硬件实现
  18. Cloudera Manger CDH 安装文档
  19. Web 应用简单测试方案
  20. C++中对已分配空间的指针调用一个类的构造函数

热门文章

  1. SIFT学习笔记之二 特征提取
  2. python logging模块【转载】
  3. 【DSP开发】CCS数据格式 load
  4. 小结Fragment与FragmentPagerAdapter的生命周期及其关系
  5. sklearn数据集
  6. php 连接webservice接口
  7. ReLU、LReLU、PReLU、CReLU、ELU、SELU
  8. C# DataTable根据字段排序
  9. net core体系-Xamarin-2概要(lignshi)
  10. Zircon