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

将两个变量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.xdnf.cn/news/13411.html

相关文章:

  • Cursor 工具项目构建指南:让 AI 审查 AI 生产的内容,确保生产的内容质量和提前发现问题
  • Vim 翻页与滚动命令总览
  • 新能源知识库(35)AutoML在用电负荷预测中如何应用?
  • 【杂谈】-递归进化:人工智能的自我改进与监管挑战
  • Linux基础指令大全
  • SpringCloud微服务入门
  • Day50 Python打卡训练营
  • Vim 修改(change)命令完整学习笔记
  • [原创]X86C++反汇编02.算术指令
  • 闪回还能导致OGG同步失败
  • 生成xcframework
  • 一个获取极简风格动画素材的网站
  • Day11_刷题niuke20250610
  • CppCon 2015 学习:C++ Requests
  • Vim 插件管理:MiniBufExplorer 使用指南
  • 区块链Web3项目的开发
  • Dify 知识库深度剖析:从构建到高效应用
  • 【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
  • kotlin kmp 副作用函数 effect
  • 使用Ajax从前端向后端发起请求
  • Prometheus基础使用指南
  • 鹰盾加密虚拟机保护技术的深度解析:从指令级虚拟化到动态对抗系统
  • (LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
  • Windows cmd中文乱码解决方法(Windows控制台中文乱码、CMD乱码、控制台乱码、Command Prompt命令提示符cmd.exe乱码)
  • JxBrowser 7.43.2 版本发布啦!
  • 预训练模型 CBAM注意力
  • 【docker n8n】windows环境如何挂载
  • 【计算机组成原理 第5版】白、戴编著 第四章 指令系统 课后题总结
  • 第二章 开发板与芯片介绍
  • 慢接口优化万能公式-适合所有系统