当前位置: 首页 > news >正文

将两个变量a,b的值进行交换,不使用任何中间变量

在C++中,不使用中间变量交换两个数有多种实现方式,以下是常见的三种方法及代码示例:

1. 加减法交换(适用于整数)

利用加减法的可逆性实现交换,注意可能存在溢出风险。

cpp

void swapByAddSub(int& a, int& b) {

    a = a + b; // a保存a+b的和

    b = a - b; // b = (a+b) - b = a(原始a的值)

    a = a - b; // a = (a+b) - a(当前b的值)= 原始b的值

}

2. 异或运算交换(适用于整数)

利用异或运算的特性( a ^ a = 0 , a ^ 0 = a ),无溢出风险。

cpp

void swapByXOR(int& a, int& b) {

    a = a ^ b; // a ^ b的结果存入a

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

http://www.dtcms.com/a/242035.html

相关文章:

  • 【持续更新】linux网络编程试题
  • leetcode240-搜索二维矩阵
  • ps去掉画板
  • Appium 安装指南
  • word的目录和正文之间存在一张空白纸,目录后面的分节符为什么调不上去?
  • MVVM 模式,以及 Angular、React、Vue 和 jQuery 的区别与关系
  • 【无标题】装箱问题的拓扑动力学解法:几何凝聚与量子坍缩模型
  • LeetCode - 394. 字符串解码
  • Java多线程实现之Callable接口深度解析
  • 蓝桥杯 2024 15届国赛 A组 儿童节快乐
  • 清新文艺手绘学习教育培训竞标汇报PPT模版分享
  • error: Sandbox: rsync(17136) deny(1) file-write-create
  • 【论文解读】ReSearch:让LLM自主学习搜索
  • C++ 手写实现 unordered_map 和 unordered_set:深入解析与源码实战
  • C# 中常用的 字符串截取方法
  • ASP4644电源芯片FB引脚:从原理到实战
  • 电动汽车VCU扭矩控制模式分类方法
  • 软考 系统架构设计师系列知识点之杂项集萃(86)
  • MODERNTCN:一种面向通用时间序列分析的现代纯卷积结构
  • Web应用安全漏洞扫描:原理、常用方法及潜在风险解析?
  • 挑战杯推荐项目
  • 观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
  • LarkXR 赋能AI x XR数字供应链:引领智能设计、数字孪生与零售新未来
  • 在centos 8上编译安装php8.0
  • 树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
  • TikTok矩阵养号实战:住宅IP纯净度与设备指纹联动方案
  • ubuntu搭建nfs服务centos挂载访问
  • 使用Spring Boot Actuator构建用户应用
  • 前馈神经网络
  • macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用