不用第三个变量交换两个变量的值的几种方法

本文探讨了在C++中不使用第三个临时变量交换两个变量值的多种方法,包括加减运算、乘除运算及位运算等,并通过实例代码演示了这些方法的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    第一次写Blog,心中有些激动o(∩_∩)o 。先在这儿为自己加加油~虽说只是些很简单的小程序,但是我希望自己能够一直坚持下去——做最好的自己,我能!

    学过编程的人都知道,在交换两个变量的值时,大多数人习惯定义一个临时变量来存放其中的一个值,防止交换数值时其中一个变量的值被覆盖掉,比如下面的一段用C++写的很简单的程序:

/**交换两个变量的值*/
#include <iostream>
using namespace std;
int main()
{
    int a=5,b=7;
    int temp=a;
    a=b;
    b=temp;
    cout<<"a="<<a<<" b="<<b<<endl;
    return 0;
}

显然,输出结果为:a=7 b=5

    有一天,我突然想,能不能不借助第三个临时变量,而只用这两个变量进行一些操作来交换其值呢?于是,我开始做了一些尝试,很快,我便想到了一种简单的方法:a=a+b;b=a-b;a=a-b;我为自己发现这个方法而感到很高兴,然后我便去网上搜了一下,想看看有没有更多的方法。结果,我发现,包括这个方法在内还有很多其他的方法,比如加减运算,乘除运算,位运算等等,甚至还可以将三条语句融合为一条,我感到很兴奋,于是我便将这几种方法整理了一下,C++代码如下:

/**不用第三个变量交换两个变量的值的几种方法*/
#include <iostream>
using namespace std;
int main()
{
    int a=5,b=7;
    /**第一种方法*/
    a=a+b;
    b=a-b;
    a=a-b;
    cout<<"a="<<a<<" b="<<b<<endl;
    /**第二种方法*/
    a=a+b-(b=a);
    cout<<"a="<<a<<" b="<<b<<endl;
    /**第三种方法*/
    a=a*b;
    b=a/b;
    a=a/b;
    cout<<"a="<<a<<" b="<<b<<endl;
    /**第四种方法*/
    a=a*b/(b=a);
    cout<<"a="<<a<<" b="<<b<<endl;
    /**第五种方法*/
    a=a^b;
    b=a^b;
    a=a^b;
    cout<<"a="<<a<<" b="<<b<<endl;
    /**第六种方法*/
    b^=a^=b^=a;
    cout<<"a="<<a<<" b="<<b<<endl;
    return 0;
}

输出结果为:

a=7 b=5
a=5 b=7
a=7 b=5
a=5 b=7
a=7 b=5
a=5 b=7

    通过输出结果可知,以上六种方法都可以做到交换两个变量的值,第一、二种方法采用的的是加减运算,第三、四种方法采用的是乘除运算,第五、六种方法采用的是异或运算。前四种方法更容易理解,后两种方法因为是位运算,效率更高。

    我相信,只要能善于提问,善于思考,善于总结,每个人都可以发现一些简单而又有趣的事情,总能够从平淡的生活中发现代码无尽的乐趣。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值