如何交换两个变量(C语言版)

一、中间变量法(入门)

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,b,c;//交换a,b的值
    scanf("%d%d",&a,&b);
    c=a;//把a的值保存在c中
    a=b;
    b=c;
    printf("%d %d",a,b);//依次输出经交换后a,b的值
    return 0;
}

此方法会浪费c的储存空间,故而小编不予推荐。

二、按位异或法(进阶)

我们先来介绍一下什么是按位异或。

异或,英文为exclusive OR,缩写成xor

异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:

a⊕b = (¬a ∧ b) ∨ (a ∧¬b)。(以上内容引自百度百科)

这里,我们使用了按位异或的自反性对a,b的值进行了交换 :即a ⊕ b ⊕ a=b.

下面我们展示出具体的代码实现:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,b;//交换a,b的值
    scanf("%d%d",&a,&b);
    a=a^b;
    b=a^b;
    a=a^b;
    printf("%d %d",a,b);//依次输出经交换后a,b的值
    return 0;
}

. 此方法不用额外引入中间变量,效率更高。

(注意:浮点数不能进行异或运算!)

如果看官们觉得以上的内容有所帮助的话,欢迎联系小编~

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值