zoukankan      html  css  js  c++  java
  • 不用临时变量交换两个变量的值

    在学习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;

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

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

  • 相关阅读:
    在Django中如何使用Redis
    Redis的基本操作
    短信接口的频率限制
    版本控制器git
    windows生成公私钥以及应用
    luffy前台组件的搭建
    周末大作业
    同源策略的解决方案
    全局Response对象和全局异常捕获和日志
    爬虫之代理池搭建
  • 原文地址:https://www.cnblogs.com/tk091/p/2590938.html
Copyright © 2011-2022 走看看