【C语言指南】交换两个变量的三种方式

举报
倔强的石头 发表于 2024/12/27 22:30:43 2024/12/27
388 0 0
【摘要】 25 两个变量值的交换是编程中最常见的问题之一,本文将介绍三种变量的交换方式。 在编程过程中应根据实际需要灵活运用

 文章目录

1.使用临时变量(推荐)

2.相加和相减的方式(值较大时可能丢失数据)

3.按位异或运算


两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式。

其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用

1.使用临时变量(推荐)

这是日常使用最多的一种方式,只需要额外申请一个临时变量,简单实用

编辑

#include<stdio.h>
int main()
{
	int a = 5;
	int b = 3;
	printf("交换前 %d %d\n", a, b);

	int c = a; //a的值放到临时变量中
	a = b;     //b的值放到a中
	b = c;     //临时变量中存放的a的值放到b中
	printf("交换后 %d %d\n", a, b);

	return 0;
}

编辑

2.相加和相减的方式(值较大时可能丢失数据)

使用这种方式的环境,就是在条件不允许创建额外的临时变量时(比如题目要求,面试官要求)

但是这种情况虽然能达到交换的效果,但是在两个变量较大时(接近整型变量的上限),求和之后就会丢失一部分的数据,导致结果出错

编辑

#include<stdio.h>
int main()
{
	int a = 5;
	int b = 3;
	printf("交换前 %d %d\n", a, b);

	a = a + b;
	b = a - b;
	a = a - b;
	printf("交换后 %d %d\n", a, b);

	return 0;
}

 编辑

3.按位异或运算

这种方式巧妙得运用了按位异或的计算特点——对任何两个值进行按位异或运算之后,再拿结果与原来的一个值进行按位异或,都会得到另外一个原来的值

这种方式解决了上一种方式存在的丢失数据问题,且不需要额外的临时变量,缺点是可读性较差

编辑

#include<stdio.h>
int main()
{
	int a = 5;
	int b = 3;
	printf("交换前 %d %d\n", a, b);

	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	printf("交换后 %d %d\n", a, b);
	return 0;
}

编辑

创作不易,还望点赞支持。如有错误,还望提醒更正。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。