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