交换两个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;
}
相关推荐
OtIo TALL5 小时前
redis7 for windows的安装教程
java
Sam_Deep_Thinking5 小时前
学数据结构到底有什么用
数据结构
kobesdu5 小时前
人形机器人SLAM:技术挑战、算法综述与开源方案
算法·机器人·人形机器人
uNke DEPH6 小时前
Spring Boot的项目结构
java·spring boot·后端
xixingzhe26 小时前
idea启动vue项目
java·vue.js·intellij-idea
wzl202612136 小时前
企业微信定时群发技术实现与实操指南(原生接口+工具落地)
java·运维·前端·企业微信
凌波粒6 小时前
Java 8 “新”特性详解:Lambda、函数式接口、Stream、Optional 与方法引用
java·开发语言·idea
曹牧6 小时前
Eclipse:悬停提示(Hover)
java·ide·eclipse
oyzz1207 小时前
Spring EL 表达式的简单介绍和使用
java·后端·spring
椰羊~王小美7 小时前
随机数概念及算法
算法