交换两个int变量的值,不能使用第三个变量。即a=3,b=5,交换之后a=5,b=3。

复制代码
//法一(正常方法)
int main()
{
	int a = 3;
	int b = 5;
	int tmp = 0;//临时变量
	printf("before:a=%d b=%d\n", a, b);
	tmp = a;
	a = b;
	b = tmp;
	printf("after:a=%d b=%d\n", a, b);
	return 0;
}
//法二(加减法) 有缺陷 a=a+b超出范围就可能出错(可能会溢出)
int main()
{
	int a = 3;
	int b = 5;
	printf("before:a=%d b=%d\n", a, b);
	a = a + b;
	b = a - b;
	a = a - b;
    printf("after:a=%d b=%d\n", a, b);
    return 0;
}
//法三(异或法)
int main()
{
	int a = 3;
	int b = 5;
	printf("before:a=%d b=%d\n", a, b);
	a = a ^ b;//a 011 b 101 异或结果为110
	b - a ^ b;
	a = a ^ b;
	printf("after:a=%d b=%d\n", a, b);
	return 0;
}
相关推荐
雨中飘荡的记忆6 小时前
LangChain4j 实战指南
java·langchain
forestsea6 小时前
现代 JavaScript 加密技术详解:Web Crypto API 与常见算法实践
前端·javascript·算法
okseekw7 小时前
Java 中的方法:从定义到重载的完整指南
java
雨中飘荡的记忆7 小时前
深入理解设计模式之适配器模式
java·设计模式
用户84913717547167 小时前
生产级故障排查实战:从制造 OOM 到 IDEA Profiler 深度破案
java·jvm
张洪权7 小时前
bcrypt 加密
算法
雨中飘荡的记忆7 小时前
深入理解设计模式之装饰者模式
java·设计模式
雨中飘荡的记忆7 小时前
秒杀系统设计与实现
java·redis·lua
快手技术7 小时前
视频理解霸榜!快手 Keye-VL 旗舰模型重磅开源,多模态视频感知领头羊
算法
小坏讲微服务7 小时前
Spring Cloud Alibaba 整合 Scala 教程完整使用
java·开发语言·分布式·spring cloud·sentinel·scala·后端开发