前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >交换两个变量的值的常见的方法

交换两个变量的值的常见的方法

作者头像
用户11070251
发布2024-04-11 14:52:52
990
发布2024-04-11 14:52:52
举报
文章被收录于专栏:Pomath

1.引入第三变量

这种方式是最常见,也是最容易理解的一种方式,比如说有a,b两个变量,现在需要交换两个变量的值,则我们可以引入第三变量,一般命名为tmp,原理如图所示:

实现代码:

代码语言:javascript
复制
#include<stdio.h>
int main()
{
    int a = 3;
    int b = 5;
    int tmp = 0;
    tmp = a;
    a = b;
    b = tmp;
    printf("a=%d b=%d\n", a, b);
    return 0;
}

2.不引入第三变量

2.1加减法交换

原理:a=a+b,b=a-b,a=a-b,这个其实就是用两个值的和去减原来的变量即可得到另外一个变量。

代码语言:javascript
复制
#include<stdio.h>
int main()
{
	int a = 3;
	int b = 5;
	a = a + b;
	b = a - b;
	a = a - b;
	printf("a=%d b=%d\n",a,b);
	return 0;
}

2.2利用异或

异或是一种对于两个二进制数的运算,相同为假,不同为真。其中,两个相同的变量异或为0,0异或任何变量都为原来的值。

代码语言:javascript
复制
#include<stdio.h>
int main()
{
	int a = 9;
	int b = 3;
	a = a ^ b;
	b = a ^ b;//此时可以看作a^b^b,b^b=0,a^0=a
	a = a ^ b;//此时可以看作a^a^b,a^a=0,0^b=b
	printf("a=%d b=%d\n", a, b);
}

2.3运用优先级

代码语言:javascript
复制
#include<stdio.h>
int main()
{
	int a = 3;
	int b = 5;
	a = a + b - (b = a);
    printf("a=%d,b=%d\n",a,b);
	return 0;
}

在这段代码中出现了表达式a=a+b-(b=a),其中括号“()”的优先级最高,所以会先进行括号内的运算,即将a的值赋值给b,但括号外b的值并未发生变化,所以a=3+5-3=5。同样也达到了两个值交换的效果。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.引入第三变量
  • 2.不引入第三变量
    • 2.1加减法交换
      • 2.2利用异或
        • 2.3运用优先级
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档