交换两个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;
}
相关推荐
玉小格1 分钟前
一次关于Python的总结
算法
星辰_mya2 分钟前
CountDownLatch深度解析
java·开发语言·后端·架构
伊甸33 分钟前
从企业级项目学敏感词过滤:DFA算法与双层缓存实战
java·算法·缓存
cfm_29144 分钟前
JVM新一代垃圾收集器深度解析:G1与ZGC
java·jvm
x***r1519 分钟前
.NET 10 SDK 安装教程(dotnet-sdk-10.0.100-win-x64详细步骤)
java·服务器·前端
bIo7lyA8v15 分钟前
算法中的随机化思想及其复杂度收益评估的技术8
算法
摇滚侠16 分钟前
MyBatis 入门到项目实战 MyBatis 的缓存 56-61
java·缓存·mybatis
让我上个超影吧20 分钟前
Claude code:Hooks
java·数据库·ai编程
数据法师20 分钟前
视频文件重复检测工具:基于哈希与视频指纹的三级筛选机制
算法·音视频·哈希算法
RH23121121 分钟前
2026.6.8Linux
java·数据库·中间件