【C两数交换】实现ab交换居然有三种方法?

简介: 【C两数交换】实现ab交换居然有三种方法?

如果不引入第三个变量,你还有几种方法交换ab两个数?

int a=10;
int b=20;
怎么交换a,b?

1.引入临时变量temp(引入第三变量)

优点:便于理解,推荐使用

int temp=a;
a=b;
b=temp;

2.a+b法(不引入第三变量)

缺陷:加法在二进制运算中,当a,b数值本来就比较大时,可能进位,就会造成溢出

a=a+b;
b=a-b;
a=a-b;

🍉运算步骤:

3d8227aeed7342729abe1308fd8cb57e.png

🍉运行结果:


78d564eaee874964beafd071e0759ffb.png

3.a^b法(不引入第三变量)

想详细了解异或^,请移步位运算

较第一种方法缺点:难理解

较第二种方法优点:不会进位,不会溢出

a=a^b;
b=a^b;
a=a^b;

🍉运算步骤:

1a1e19f0c62a424ba14801a3bfab8f87.png


🍉运行结果:

bc7dd8a1e4594e418e842eea3e9eddee.png


🍉方法二和方法三相似点和记忆:左侧都依次是aba


00c5ba986e154c4b8ad3046cf8f5ba3d.png


目录
相关文章
|
canal 缓存 NoSQL
【Redis系列笔记】双写一致性
本文讨论了缓存不一致问题及其后果,如价格显示错误和订单计算错误。问题主要源于并发和双写操作的异常。解决方案包括使用分布式锁(但可能导致性能下降和复杂性增加)、延迟双删策略(通过延迟删除缓存来等待数据同步)以及异步同步方法,如通过Canal和MQ实现数据的最终一致性。面试中,可以提及这些策略来确保数据库和缓存数据的一致性。
1233 1
【Redis系列笔记】双写一致性
|
NoSQL 应用服务中间件 Redis
在华为鲲鹏OpenEuler20.03系统上安装Redis, Zookeeper, Nginx
在华为鲲鹏OpenEuler20.03系统上安装Redis, Zookeeper, Nginx
3484 0
在华为鲲鹏OpenEuler20.03系统上安装Redis, Zookeeper, Nginx
|
分布式数据库 Hbase
HBase StochasticLoadBalancer组件介绍
HBase StochasticLoadBalancer组件介绍。
3012 0
|
12月前
|
安全 5G 网络性能优化
深入理解5G中的SAEGW:服务网关边界
【10月更文挑战第9天】
381 0
|
C语言
【51单片机】LCD1602显示字符串,时间、时间+按键校准、秒表计时的功能代码。
【51单片机】LCD1602显示字符串,时间、时间+按键校准、秒表计时的功能代码。
312 3
|
存储 云安全 安全
云端数据加密实践
【7月更文挑战第12天】云端数据加密是保障云端数据安全的重要手段。通过选择合适的加密方式、加强加密密钥管理、实施静态与动态数据加密、采用加密信息检索技术和应用层加密组件等措施,可以有效地保护云端数据的安全。未来,随着技术的不断进步和应用需求的多样化,云端数据加密技术将继续发挥其重要作用,为各种应用场景提供强大的安全保障。
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的技术疫情防控自动售货机系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的技术疫情防控自动售货机系统附带文章和源代码部署视频讲解等
209 0
基于ssm+vue.js+uniapp小程序的技术疫情防控自动售货机系统附带文章和源代码部署视频讲解等
|
前端开发 IDE Java
深入浅出 Compose Compiler(1) Kotlin Compiler & KCP
深入浅出 Compose Compiler(1) Kotlin Compiler & KCP
416 1
|
消息中间件 监控 Kafka
【Kafka】Kafka 数据一致性原理
【4月更文挑战第7天】【Kafka】Kafka 数据一致性原理
|
存储 XML vr&ar
软件体系结构 - 架构风格(12)超文本系统架构风格
【4月更文挑战第21天】软件体系结构 - 架构风格(12)超文本系统架构风格
371 0