【C语言】交换两个数值的三种方法

本文介绍了三种常用的交换变量的方法:使用临时变量、通过加减操作和利用异或运算。详细解释了每种方法的工作原理,并提供了C语言示例代码进行说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.交换数值的三种方法

1.创建临时变量。

这种方法最简单也最容易想到,但有时候会让我们不创建临时变量来进行交换数值。那么就来看看下边两种方法!

2.不创建临时变量(利用两数的和去减任意一个数)

方法缺陷:两个数的和可能会越界。(数值小的时候可以用)。同样的这是一种假交换,函数调用结束后原本的值并没有真正的交换。

3.不创建临时变量(利用异或)

抑或:异或运算符∧也称XOR运算符。它的规则是若参加运算的两个二进位同号,则结果为0(假);异号则为1(真)。即000011110。如: 即071052,结果为023(八进制数)。

“异或”的意思是判断两个相应的位值是否为“异”,为“异”(值不同)就取真(1),否则为(0)。
例如:
2 的二进制数为00000010
4 的二进制数为00000100

两者抑或    
00000010  
00000100
  
00000110

下边来看一段代码

#include<stdio.h>
#include<Windows.h>
int Swap(int num1, int num2)
{
	//1.创建临时变量的交换数据
	/*int tmp = 0;
	tmp = num1;
	num1 = num2;
	num2 = tmp;
	printf("num1= %d   num2=%d \n", num1, num2);

	return 0;*/
	//2.不创建临时变量来交换数据(抑或)
	num1 ^= num2;
	num2 ^= num1;
	num1 ^= num2;
	printf("num1= %d   num2=%d \n", num1, num2);
	return 0;

	//3.不创建临时变量(相加减)
	num1 = (num1 + num2) - num1;
	num2 = (num1 + num2) - num1;
		printf("num1= %d   num2=%d \n", num1, num2);
	return 0;

}

int main()
{
	int num1 = 2;
	int num2 = 4;
	printf("num1= %d   num2=%d \n", num1, num2);

	Swap(num1, num2);
	system("pause");
	return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值