//法一(正常方法)
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
相关推荐
独自破碎E4 分钟前
怎么实现一个滑动验证码功能?又如何防止被机器识别破解一路往蓝-Anbo7 分钟前
C语言从句柄到对象 (三) —— 抛弃 Malloc:静态对象池与索引句柄的终极形态lbb 小魔仙21 分钟前
【Java】Spring Data JPA 详解:ORM 映射、查询方法与复杂 SQL 处理倚肆21 分钟前
Kafka部署指南:单机开发模式与集群生产模式( 4.1.1 版本)qq132670294033 分钟前
ARM版统信UOS桌面安装JDKfantasy_arch36 分钟前
SVT-AV1 B帧决策和mini-GOP决策分析声声codeGrandMaster39 分钟前
逻辑回归-泰坦尼克号集芯微电科技有限公司40 分钟前
PC1001超高频率(50HMZ)单通单低侧GaN FET驱动器支持正负相位配置码头工人1 小时前
【架构师系列】风控场景下超高并发频次计算服务的设计与实践一路往蓝-Anbo1 小时前
C语言从句柄到对象 (二) —— 极致的封装:不透明指针与 SDK 级设计