当前位置:网站首页>交换两个整型变量的三种方法
交换两个整型变量的三种方法
2022-08-08 08:39:00 【徐憨憨!】
在学习C语言的过程中,我们都会遇到的一个题目就是:交换两个整型的变量;今天我将讲解三种方法供大家开拓视野!!!
法一:
新建一个整型变量c,假设我们要交换a b两个整型变量的值,我们先把a变量的内容存储到c当中,再把b变量的内容存储到a当中,最后再把c变量的内容存放在b中,这样就实现了a b两个整型变量的交换
图解如下:



代码如下:
int main()
{
int a = 10;
int b = 20;
int c = 0;
printf("交换前:a = %d b = %d\n", a, b);
//交换
c = a;
a = b;
b = c;
printf("交换后:a = %d b = %d\n", a, b);
return 0;
}
上述方法使用了一个新的变量c,360公司在某一年招聘的笔试题规定在不创建第三个变量的条件下交换两个整数,这该怎么做?
法一:
int main()
{
int a = 10;
int b = 20;
printf("交换前:a = %d b = %d\n", a, b);
//交换
a = a + b;//a=10+20=30
b = a - b;//b=30-20=10
a = a - b;//a=30-10=20
printf("交换后:a = %d b = %d\n", a, b);
return 0;
}
这种方法编译结果正确,但是这种方法有一个缺陷,当a和b特别大,a+b的结果造成溢出的时候,这种方法就会编译错误,所以我们来看一下法二的优化方法。
法二:
法二将利用到一个操作符:^按位异或 ,我们都知道一个整型变量在计算机中是按照二进制的补码存储的,如3的二进制为:00000000000000000000000000000011,按位异或的意思就是两个整数的二进制位按位异或,若二进制位相同则为0否则为1,比如3和5按位异或的二进制序列为:00000000000000000000000000000110为6

那么如何利用按位异或操作符交换两个整型变量呢?
我们得知道按位异或操作符的几个规律:
0^a = a
a^a = 0
且按位异或操作符满足交换律
即a^b^a = a^a^b
通过上述规律,我们可以来解决此问题
int main()
{
int a = 10;
int b = 20;
printf("交换前:a = %d b = %d\n", a, b);
//交换
a = a ^ b;//a=a^b
b = a ^ b;//b=a^b^b=a
a = a ^ b;//a=a^b=a^b^a=b
printf("交换后:a = %d b = %d\n", a, b);
return 0;
}
上述三种交换两个整型变量的方法希望可以帮助大家开拓视野!!!
边栏推荐
- Kotlin协程:生命周期原理
- Excel method is commonly used in text function 5
- Django+MySQL+HarmonyOS------------笔记二
- [Optimized scheduling] Based on particle swarm to realize economic scheduling optimization of microgrid under grid-connected model with matlab code
- lvm creates logical volumes
- STL 底层实现原理
- 要写脚本,编程不好不要紧--浅谈CTF中脚本的编写方法
- 数据治理(三):数据质量管理
- docker部署redis容器问题
- Kotlin Compose MiUI13.0.4 版本 Livedata不生效
猜你喜欢
随机推荐
【office】word
用于一型糖尿病血糖调节的无模型iPID控制器
BOSS直聘回应女大学生被性骚扰:高度重视求职者安全 可在App举报
数学基础(二)逆矩阵、伪逆矩阵、最小二乘解、最小范数解
[Regression prediction] Gaussian process regression based on GPML toolbox with matlab code
[ 深度学习 ] 课程学习(Curriculum Learning)
volatile在C语言中的基本使用方法
包含漏洞-读写文件以及执行命令
数据智能正当时,九章云极DataCanvas公司荣获“最具投资价值公司”
mysql三种安装方式 你知道了哪种
攻防世界——ics-05
Want to use SQL to achieve two days after the data contrast, the new data sheet and a list of tags
力扣142-环形链表——链表&快慢指针法&哈希表法
22-08-06 西安 EasyExcel实现字典表导入、导出
选择适合投稿的英文期刊或会议的方法
推荐系统 使用surprise库基于协同过滤的方法实现
你一定要看的安装及卸载测试用例的步骤及方法总结
【项目问题】Ionic开发移动端app,手把手教你如何打包生成apk
SSRF漏洞
BLOB, TEXT, GEOMETRY or JSON column 'xxxx' can't have a default value







