C语言交换两个整形变量的内容

1.创建临时变量来交换

#include<stdio.h>
#include<windows.h>
#pragma warning (disable:4996)
void Swap(int* x, int* y)
{
 //交换两个整数的内容
	int temp = 0;
	temp = *x;    
	*x = *y;
	*y = temp;
}
int main()
{
	int num1 = 0, num2 = 0;
	scanf("%d %d", &num1, &num2);
	printf("交换前:%d %d\n", num1, num2);
	Swap(&num1, &num2);
	printf("交换后:%d %d\n", num1, num2);
	system("pause");
	return 0;
}
//运行环境:vs2019

附图:
C语言交换两个整形变量的内容_第1张图片

2.不创建临时变量交换(按位异或)

利用按位异或相同为假,不同为真的性质,即:(0^0=0)、 (0^1=1)、 (1^0=1)、 (1^1=0)。例如: 10^ 20 ^10=20可以看成是 (10 ^ 10)^20= 0^20=20。
上代码:

#include<stdio.h>
#include<windows.h>
#pragma warning (disable:4996)
void Swap(int* x, int* y)
{
 //交换两个变量(不创建临时变量)
	*x = (*x^*y);
	*y = (*y^*x);
	*x = (*x^*y);
}
int main()
{
	int num1 = 0, num2 = 0;
	scanf("%d %d", &num1, &num2);
	printf("交换前:%d %d\n", num1, num2);
	Swap(&num1, &num2);
	printf("交换后:%d %d\n", num1, num2);
	system("pause");
	return 0;
}
//运行环境:vs2019

附图:
C语言交换两个整形变量的内容_第2张图片

你可能感兴趣的:(C语言交换两个整形变量的内容)