//法一(正常方法)
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
相关推荐
cpp_25012 小时前
P1024 [NOIP 2001 提高组] 一元三次方程求解半瓶榴莲奶^_^3 小时前
jvm java虚拟机田梓燊8 小时前
力扣:23.合并 K 个升序链表invicinble9 小时前
这里对java的知识体系做一个全域的介绍wbs_scy9 小时前
【Linux 线程进阶】进程 vs 线程资源划分 + 线程控制全详解re林檎9 小时前
算法札记——4.27ss2739 小时前
食谱推荐系统功能测试如何写?AI人工智能+电脑小能手9 小时前
【大白话说Java面试题】【Java基础篇】第15题:JDK1.7中HashMap扩容为什么会发生死循环?如何解决数据牧羊人的成长笔记10 小时前
逻辑回归与Softmax回归try2find10 小时前
打印ascii码报错问题