交换两个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;
}
相关推荐
故渊ZY7 分钟前
Java 代理模式:从原理到实战的全方位解析
java·开发语言·架构
匿者 衍9 分钟前
POI读取 excel 嵌入式图片(支持wps 和 office)
java·excel
一个尚在学习的计算机小白18 分钟前
java集合
java·开发语言
IUGEI26 分钟前
synchronized的工作机制是怎样的?深入解析synchronized底层原理
java·开发语言·后端·c#
q***136130 分钟前
Windows操作系统部署Tomcat详细讲解
java·windows·tomcat
z***I39430 分钟前
Java桌面应用案例
java·开发语言
r***12381 小时前
SpringBoot最佳实践之 - 使用AOP记录操作日志
java·spring boot·后端
间彧1 小时前
Java进程内存深度解析:从JVM组件内存到RSS的全面视角
java
一个不知名程序员www1 小时前
算法学习入门---vector(C++)
c++·算法
间彧1 小时前
对比GraalVM Native Image与传统JVM,在内存管理方面各自适合哪些具体业务场景?
java