当前位置:网站首页>C语言 交换两个变量(不创建临时变量) 代码详解
C语言 交换两个变量(不创建临时变量) 代码详解
2022-08-09 13:23:00 【东区东区!】
目录
在不创建临时变量的情况下,交换两个变量,一般有两种方法
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;
}
边栏推荐
猜你喜欢
随机推荐
Xshell建立SSH隧道连接
蓝桥历届真题-蛇形填数
【ClickHouse】 日志清理方法(query_log、query_thread_log)
远程控制软件-向日葵
FFmpeg av_interleaved_write_frame错误
从房产中介到程序员--80后张江男
响应式pbootcms模板仪表水表类网站
vs怎么用一个Button链接到另一个页面
机器学习web服务化实战:一次吐血的服务化之路 (转载非原创)
去IOE-EBS何去何从
NC193 二叉树的前序遍历
NC53 删除链表的倒数第n个节点
笔试题记录~~
12. cuBLAS Development Guide Chinese version--Level-1 functions asum() and axpy() in cuBLAS
Es7.x使用RestHighLevelClient进行查询操作
响应式pbootcms模板外贸灯具类网站
ODA一体机有什么缺点
服务器被攻击了三次,还把我的数据库删除了,还想要我汇钱赎回数据
SEATA分布式事务框架解析
神经网络与深度学习(TensorFlow)