栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言 交换两个变量(不创建临时变量) 代码详解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言 交换两个变量(不创建临时变量) 代码详解

目录

1.加减法

2.异或法


在不创建临时变量的情况下,交换两个变量,一般有两种方法

1.加减法

通过2个变量的相加相减从而达到两个变量相互交换的目的,但是这种方法有一定的缺点,当变量超过32位时,且无符号,得到的结果可能会有问题,解决的方法是printf时,按照u%打印。

#include
int main()
{
    int a = 10;    
    int b = 20;
    a = a + b;    // a = 30
    b = a - b;    // b = 10
    b = a - b;    // a = 20

    printf("a= %d, b = %d", a, b);
    return 0;
}

2.异或法

这种方法是最常用的办法,也是最推荐的办法,这样不会产生超出范围等错误

异或符号 ^ : 相同为0 ,相异为1

具体原理: a = 10 b = 20

a: 0000 0000 0000 0000 0000 0000 0000 1010

          b:0000 0000 0000 0000 0000 0000 0001 0100

a ^ b=:0000 0000 0000 0000 0000 0000 0001 1 110 = 30  = a

a^b = : 0000 0000 0000 0000 0000 0000 0000 1010 = 10 = b

a^b =  :  0000 0000 0000 0000 0000 0000 0001  0100  = 20 = a

代码为:

#include
int main()
{
    int a =10;
    int b =20;
     a = a^b;
     b = a^b;
     c = a^b;
  printf("a = %d, b = %d", a, b);
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/862475.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号