在学习C语言的时候,涉及到两个变量值的交换,其中用到临时变量。

类似于:

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

这样的语句,如果在没有临时变量的情况下,该如何做呢?

网络上的人们给出了两种方法:

一、异或法

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

二、加减法

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

其实我们看加减法更容易理解,也有许多人用这种方法,虽然这些方法可能用不到,但是了解下还是有必要的,至少要读懂别人的代码是吧。

下面是一些个人的分析:

首先从简单的加减法来进行学习测试。

a=a+b;

此时a为两个数之和,我们用sum来表示,这样就变成了

sum=a+b;

b=a-b;

这个步骤的时候,相当于

b=sum-b;

b=a+b-b=a;

最后一步:a=a-b;

也就是a=sum-b,这个时候,b已经变成了a,也就是

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

证明结束,嘿嘿,简单有趣吧。马上关灯了,明天测试另一个。

今天来看看关于异或的情况

首先是a=a^b;

同理,我们设sum=a^b;

第二步b=b^a; 相当于b=b^sum=b^a^b=a;

第三步:a=a^b=sum^b=a^b^a=b;

其实两个方法都类似,我们没有临时变量,就自己用一个来做临时变量(相当于临时变量)来完成我们的交换。

当然,我们要注意,是不是所有的数据类型都能这样用呢?你可以自己试试哦!

不用临时变量交换两个变量的值相关推荐

  1. 不用额外变量交换两个整数的值

    题目 如何不用任何额外变量交换两个整数的值 基本思路 如果给定整数a和b使用如下三行代码即可交换a和b的值: a = a ^ b b = a ^ b a = a ^ b 如何理解这三行代码的具体功能呢 ...

  2. php比较两个变量的值_总结PHP不用第三个变量交换两个变量的值的几种方法

    "PHP不用第三个变量交换两个变量的值"这个题看到过好多次了,看来面试确实喜欢考这道题.今天,对于这个题目,我自己总结了几种方法,可能不全,大家来互相补充. 有些仅适用于字符串,方 ...

  3. C++不借助第三变量交换两个变量的值

    C++不借助第三变量交换两个变量的值 源代码: #include<iostream> using namespace std; int main(){int x,y;cout<< ...

  4. PHP中不用第三个变量交换两个变量的值

    相信大家在PHP面试或者学习中经常会遇到这个问题就是"不用第三个变量来交换两个变量的值",今天正对这个问题来讨论一下: 第一种方法:首先会想到的 这种方法简单可行,顺利的交换了两个 ...

  5. 不使用第三变量交换两个变量的值

    在 Java 中,经常会需要交换两个变量的值,我们一般是使用第三变量完成,比如 temp = a; a = b; b = temp; 这样的写法确实能达成目标,但因此而引入了第三变量,对资源的消耗增加 ...

  6. 不允许创建临时变量交换两个变量的内容

    在学习C语言的时候,涉及到两个变量值的交换,其中用到临时变量.如果在没有临时变量的情况下,该如何做呢? 方法一:C语言提供的异或运算就可以实现这样的操作.异或运算符"^"也称&qu ...

  7. 不用引入第三变量交换两个变量的值

    前几天发现了一个问题:有人告诉我,要进行变量交换,就必须引入第三变量! 假设我们要交换a和b变量的值,如果写成 int a=5,b=10; a=b; b=a; 那么结果就是两个都是10,理由不言而喻. ...

  8. 不借助第三方变量交换两个变量的值(多种方法)

    转载自:https://blog.csdn.net/kangkermit/article/details/21371159 通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换.代码 ...

  9. 不使用第三个变量交换两个变量的值

    小结一下: 给出两个变量:var a = 1, b = 2; 方法一: a = a + b; b = a - b; a = a - b; a, b 的值已经交换. 方法二: a = a ^ b; b ...

最新文章

  1. Antd-Design List渲染列中Button 点击事件 传递参数
  2. 使用DML语句【weber出品必属精品】
  3. BZOJ-1008 越狱 数论快速幂
  4. 对于C#里面的this与base
  5. poj1274 最大二分匹配
  6. ORACLE 数据库安装后,PL/SQL的登录问题完美解决
  7. 前端学习(869):高级事件导读
  8. linux shell 获取用户名,shell脚本输出/etc/passwd中shell类型对应的用户名及其个数
  9. day4-软件目录开发规范
  10. Dedecms会员中心注入漏洞
  11. PCB走线载流能力-揭秘一
  12. R语言排序三个基本函数:sort(),rank(),order()的用法
  13. 2011英语一长难句
  14. 华为开发者大会2022直播攻略请查收!
  15. libVLC库下载及测试
  16. 鼎捷t100架构_新合发集团借助鼎捷T100信息化全面升级!
  17. 计算机网络实验(华为eNSP模拟器)——第十一章 帧中继网络
  18. 计算机打字题数字知识,电脑打字出现的是数字怎么办
  19. 黑马程序员_Java_多线程
  20. Ubuntu更新系统源时出现错误提示W: GPG 错误

热门文章

  1. ccs船级社认证费用多少_亚马逊UL507认证是什么?办理费用是多少?
  2. PHP页面运行一半,在PHP中仅缓存页面的一部分
  3. jdk源码分析书籍 pdf_如何阅读源码?
  4. asp连接oracle 服务端,Asp.net core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库...
  5. eclipse中文版界面设置黑色_硬核干货总结IDEA开发的26个常用设置
  6. em oracle 安装,oracle-EM安装
  7. 13.简述MYSQL的权限级别_MySQL权限级别
  8. 防止mysql拷贝_转载:mysql复制优化
  9. Flask常见错误与解决方法
  10. python的分支结构