//法一(正常方法)
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
相关推荐
取加若则_3 小时前
Linux进程调度:双队列高效管理Tisfy5 小时前
LeetCode 961.在长度 2N 的数组中找出重复 N 次的元素:5种语言x5种方法(及其变种) —— All By Hand小O的算法实验室5 小时前
2024年ESWA SCI1区TOP,容错文化概率粒子群算法+多 AGV 路径规划,深度解析+性能实测Louis Maos5 小时前
堆与栈分配的本质区别人道领域5 小时前
【零基础学java】(HashMap源码解析--添加第一个元素)WW_千谷山4_sch6 小时前
洛谷P1120&UVA307 [CERC 1995] 小木棍毕设源码-朱学姐6 小时前
【开题答辩全过程】以 果蔬禽蛋生鲜食品采购配送系统的设计与实现为例,包含答辩的问题和答案zfj3216 小时前
java线程的不同状态下调用interrupt()方法后的行为及注意事项XLYcmy6 小时前
高级密码猜测生成器AdvancedPasswordGenerator密码生成器程序详细分析廋到被风吹走6 小时前
【Java】【Jdk】Jdk17->Jdk21