C语言交换两个数的值(没有第三个数)

在日常的编程中,会经常遇到需要交换两个数值得时候,我们通常的做法是创建一个新的变量,在需要交换的两个数之间起到一个中间值缓存数据的作用。那么,如果在不创建新变量的情况下,如何交换两个数的值呢:

首先我们创建一个测试程序:因为可能会有多种解决办法,所以直接用函数来实现

解决办法:

方案一、加减法:

这个方法最简单,就是基本的小学算术题,需要注意的是我们在创建函数的时候,由于需要改变变量的值,所以函数的形参需要使用指针作为函数参数,再使用解引用的方式来改变变量的值。(下同)

运行结果:

方案二、乘除法:

跟法案一的加减法大概相同,也是小学算术题

运行结果:

方案三、亦或法:

讲解:

使用亦或交换两个数的值是一种非常好的方法,其原理就是二进制数间的亦或运算

首先NumA与NumB进行^=运算,此时NumA为30

然后再用NumB与新的NumA进行^=运算,此时NumB经过运算就变成了NumA原来的值

最后再用NumA^=NumB,也就是NumA = NumA ^ NumB -> NumA = 10 ^ 30;

运行结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值