交换两个数值的三种方法

一.交换数值的三种方法

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;
}

猜你喜欢

转载自blog.csdn.net/alidada_blog/article/details/80083834