不用中间变量交换两个数的值

不用中间变量交换a和b的值 定理:如果 a ^ b = c,则 a ^ c = b,b ^ c = a; a ^ b = [(~a) & b] | [(~b) & a] 异或真值表 a b 结果 1 1 0 0 0 0 1 0 1 0 1 1 总结:相同为 0 ;不同为 1。 例子: 若 a = 5,b = 6,用4位二进制来表示 a 和 b; 阅读详情

交换两个数的值是一件非常简单的任务,如果交换a与b,我们一般这样做:

tmp = a;

a = b;

b = tmp;

如果不用中间变量tmp,有以下三种方法:

方法1:

a=a+b;

b=a-b;

a=a-b;

方法2:

a=a^b;

b=a^b;

a=a^b;

方法3:

a=a+b-(b=a);

备注:推荐用异或的方法2,方法3是方法1的变体。

将两个变量a,b的值进行交换,不使用任何中间变量 std::cout << "原始值: a = " << a << ", b = " << b << std::endl;std::cout << "交换后: a = " << a << ", b = " << b << std::endl;std::cout << "原始值: x = " << x << ", y = " << y << std::endl;std::cout << "交换后: x = " << x << ", y = " << y << std::endl;// a ^ b的结果存入a。 阅读详情

相关推荐

Virtuoso ADE Explorer实战技巧:从基础操作到高级仿真

本文深入解析了Virtuoso ADE Explorer在模拟电路仿真中的核心价值与实战技巧。作为Cadence平台的专业工具,它专为高效、系统化的设计空间探索而生,能大幅提升PVT验证、参数扫描和蒙特卡洛分析的效率。文章从基础界面操作、并行仿真管理,到高级的参数扫描、数据报告生成及蒙特卡洛结果深度剖析,提供了全面的避坑指南与工作流优化建议,帮助工程师从重复劳动中解放,专注于电路设计与性能优化。

ios99的博客 900

不使用任何中间变量如何将a、b的值进行交换(三种方法)

方法1.通过相加减可以达到两数交换的目的,优点省事嘛,缺点就是有可能会产生数据溢出的情况。 代码如下: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { int a = 5, b = 15; a = a + b; b = a - b; a = a - b; printf("a=%d b=%d\n",...

qq_45116886的博客 8915

Android音频子系统分析-car_audio_configuration.xml

先附上一个例子,再逐一解释。概括来说,该文件描述了车里有哪些区域,每个区域划分了多少组,每个组包含了哪些设备,每个设备接收哪些类型的音频流。

不定时记录分享一些有用没用的东西 989

交换两数(不使用中间变量)

交换两数,其中没有用到临时变量,并且表明了每种方法的缺点,希望大家在使用的时候选择最合适的方法

weixin_72883322的博客 2359

摄像头模组选型避坑指南:如何根据Sensor和Lens参数匹配最佳组合

本文深入解析摄像头模组选型中Sensor与Lens的核心参数匹配要点。重点阐述了主光线角(CRA)匹配对边缘画质的关键影响,并提供了传感器尺寸、像素尺寸、焦距、光圈等参数的协同选型策略与实战避坑指南,帮助工程师在手机、安防、车载等不同应用场景下实现性能与成本的最佳平衡。

ee345的博客 618

STM32F103ZE驱动PMW3901光流模块,从SPI配置到数据读取的完整避坑指南

本文详细解析了STM32F103ZE驱动PMW3901光流模块的全过程,从SPI配置、硬件连接到数据读取与处理,提供了完整的避坑指南。重点介绍了SPI参数配置、初始化序列优化、运动数据滤波等关键技巧,帮助开发者快速实现精准的光流检测。

weixin_42631411的博客 515

不用中间变量交换a和b的值php,C++_C++面试题之数a、b的值互换(不使用中间变量),题目要求:将数a、b的值进行 - phpStudy...

C++面试题之数a、b的值互换(不使用中间变量)题目要求:将数a、b的值进行交换,并且不使用任何中间变量。程序如下:#includevoid swapValue1(int &a, int &b) //使用中间变量交换数据{int temp = a;a = b;b = temp;}void swapValue2(int &a, int &b)//使用加减运算完成数据交...

weixin_31047023的博客 598

TwinCAT3 Modbus-TCP Client/Server使用

/起始地址是12289//起始地址是12294。

panjinliang066333的博客 7736

如何做到不用中间变量来交换两个数的值

可以使用异或运算来实现两个数的交换。 原理:异或即是相同为0,不同为1(二进制表达),其中一个数与任意一个给定的值连续异或两次,值不变,这就是位运算的原理。 例如: a = a^b^a;具体实现:public void swap(int a,int b){ a = a^b; b = a^b; a = a^b; }

余同学的开发之路 1473

全志平台Sensor驱动移植实战:从点亮到调优的完整指南

本文详细介绍了在全志平台上进行Sensor驱动移植的全过程,从硬件引脚配置到软件参数调优,涵盖点亮、出图和调优三大阶段。重点解析了OV02B10传感器的I2C通信建立、上电时序调试和初始化参数配置等关键技术点,并提供了实用的调试技巧与问题排查指南,帮助开发者高效完成全志平台Sensor驱动移植工作。

weixin_28727975的博客 218

SpringBoot实战教程-springboot概论

Spring Boot 是一个快速开发框架,能够快速的整合第三方框架,简化XML配置,全部采用注解形式,以及自动配置。内置web容器,帮助开发者能够实现快速开发,简化了应用系统的初始搭建以及开发过程。

鸟哥哥的专栏 4155

不用中间变量交换两个数的值的方法

刚才突然无意间想到这个问题,然后自己想了一下,就只想到了我们学校自己编写c语言书上的那个方法,于是就在网上搜了一下,结果好多呀!然后自己就总结了一下,权当是找乐子吧! 就设两个变量是x和y吧。 方法一 x=x^y;   y=x^y; x=x^y; 这个貌似只能用于整数。方法二 x=x+y; y=x-y; x=x-y; 这个对于整数、小数都可以,只是注意:如果数字大了不

nyist_jiang 1114

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

不用中间变量,交换两个数的值

通常我们交换 a,b两个变量的值时,都是通过一个中间变量来实现 temp = a; a = b; b = temp; 这里介绍的是不用中间变量,也可以交换两个数的值,具体算法如下: view source print? 1 void swap(int &a, int &b) 2

baoendemao的专栏 1270

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

不用中间变量交换两个数的值(位移运算)

看文章看到这个方法就记录一下 1. 一般我们交换两个数的的值,都会增加一份临时变量 例如: int a = 10; int b = 20; int c = a; a = b; b = c; 2. 可以通过数值相加 例如: int a = 10; int b = ...

纪先生笔记 152

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

c语言 三种不用中间变量交换两个数的值

//第一种 int main() { int a = 5; int b = 3; int tmp = b; printf("a=%d,b=%d\n", a, b); b = a; a = tmp; printf("a=%d,b=%d\n", a, b); return 0; } 不创建临时变量 第二种 int main() { int a = 5; int b = 3; printf("a=%d,b=%d\n", a,...

yhm1197981189的博客 973

不用中间变量交换两个变量的值

      我们刚学编程的时候遇到需要交换两个变量的值时通常都会定义一个中间变量,比如: #include <iostream> int main() { int a = 4, b = 5; int c = a; a = b; b = c; std::cout << "a =...

wutaikun的博客 3705

不使用中间变量交换两个数

传统方法 在交换两个数的值时,最经常使用的方法是借助于一个中间变量来进行交换。 temp = a; a = b; b = temp; 方法一 通过巧妙的加法与减法运算来实现两个数的交换。 a = a + b; b = a - b; a = a - b; 方法二 使用位运算(异或)来交换

1013

C++不使用中间变量temp交换两个数的值

#include &lt;iostream&gt; using namespace std; int main() { int a = 2, b = 5; cout &lt;&lt; "Swap before, value of a, b:" &lt;&lt; endl; cout &lt;&lt; "a: " &lt;&lt; a &lt;&lt; ",

hellocoding的博客 968

【面试】解释C++中如何不用中间变量交换两个数

通过加减法的操作交换两个数,不使用中间变量,但要注意可能的溢出问题。通过异或运算交换两个数,这种方法不会有溢出问题,且适用于所有整数类型。

Lewiz_124的博客 492

【C++】怎样不用中间变量temp 实现两个数交换

第一类方法也是常用的方法,通过多次的数值计算来完成交换,到现在知道的有下面三种: (1)加减法。 a = a + b; b = a - b; a = a - b; 该方法可以交换整型和浮点型数值的变量,但在处理浮点型的时候有可能出现精度的损失,例如对数据: a = 3.123456 b = 1234567.000000 交换后各变量值变为: a = 1234567.000000

小田的专栏 3227
上一篇: C语言不用系统函数对字符串进行截取
下一篇: (讨论)关于const修饰的值不能修改的实践
Zwarwolf
博客等级 码龄20年 693粉丝 123原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zwarwolf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值