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

目录

1.加减法

2.异或法


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

1.加减法

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

#include<stdio.h>
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<stdio.h>
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;
}

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值