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

C语言不创建中间变量交换2个数

使用异或实现;

‌C语言中的异或运算‌符合以下规律,
‌    交换律‌:即a ^ b = b ^ a。
‌    结合律‌:(a ^ b) ^ c = a ^ (b ^ c)。
‌    自反性‌:对于任意操作数a,有a ^ a = 0。
‌    零元素‌:对于任意操作数a,有a ^ 0 = a。
‌    唯一性‌:对于任意操作数a,有a ^ a = 0和a ^ 0 = a。

可利用实现不创建中间变量交换2个数;

void CYhswpView::OnDraw(CDC* pDC)
{
	CYhswpDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	CString str1;

	int a = 99, b = 33;
	str1.Format("a=%d,  b=%d", a, b);
	pDC->TextOut(30, 30, str1);

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

	str1.Format("a=%d,  b=%d", a, b);
	pDC->TextOut(30, 90, str1);

}

 


http://www.kler.cn/a/395159.html

相关文章:

  • Spark RDD中常用聚合算子源码层面的对比分析
  • 23种设计模式的Flutter实现第一篇创建型模式(一)
  • 干货分享之Python爬虫与代理
  • Vulnhub靶场案例渗透[8]- HackableII
  • 批量从Excel某一列中找到符合要求的值并提取其对应数据
  • react + ts定义接口类型写法
  • win32 / WTL 开发多线程应用,子线程传递大对象给UI线程(主窗口)的方法
  • vite + vue3 + ts解决别名引用@/api/user报错找不到相应的模块
  • 前端系统设计面试题(二)Javascript\Vue
  • 从 MySQL 5.7 到 8.0:理解 GROUP BY 的新规则与实战优化20241112
  • 3D 数组插值 MATLAB
  • vue2 动态路由的实现
  • Leetcode 整数转罗马数字
  • webpack5 + vue3 从零配置项目
  • 低代码集成多方API的简单实现
  • 力扣113:路径总和II
  • 蓝领招聘二期笔记
  • 标题:网络安全:数字时代的守护盾
  • Python基础学习-07不可重复的set集合
  • 10款音频剪辑工具的个人实践体验感受!!
  • PG实例CPU使用率高排查思路
  • pyflink datastream数据流ds经过一系列转换后转为table,t_env.from_data_stream(ds)
  • 【C++学习(35)】在Linux中基于ucontext实现C++实现协程(Coroutine),基于C++20的co_await 协程的关键字实现协程
  • 机器学习在网络安全中的应用
  • 问:SQL优化,七条实践总结?
  • Rust枚举之卧龙凤雏(Rust Option枚举、Rust Result枚举)(Rust Enum、Some(T)、Ok(T)、Err(E))链式操作