欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言小算法集锦---交换两个变量的值

程序员文章站 2022-07-03 19:18:49
...

c语言交换两个变量的方法:
   1.通过创建临时变量的方式交换两个变量的值
   2.通过求和的方式交换两个变量的值
   3.通过按位异或的方式交换两个变量的值
第1种方法需要引入额外的变量;第2种方法中如果要交换的两个值的数据较大,可能会导致数据溢出(不推荐该方法);第3种方法是不是显得很高大上呢

下面是在VC++6.0下测试的交换两个变量的值的三种方法的完整测式代码:
#include <stdio.h>

//通过创建临时变量的方式交换两个变量的值
void swap1(int *x, int *y){
	int temp;

	temp = *x;
	*x = *y;
	*y = temp;
}

//通过求和的方式交换两个变量的值
void swap2(int *x, int *y){
	*x = *x + *y;
	*y = *x - *y;
	*x = *x - *y;
}

//通过按位异或的方式交换两个变量的值
void swap3(int *x, int *y){
	*x = *x^*y;
	*y = *y^*x;
	*x = *x^*y;
}

int main(void)
{
    int a = 2;
    int b = 5;

	printf("请输入a b的值:");
	scanf("%d %d", &a, &b);

	swap3(&a, &b);
    
	printf("交换后的数据为:");
	printf("a = %d,b = %d\n",a,b);

	return 0;
}
下面通过一个实例简要分析按位异或的方式交换两个变量的值的方式的运行机制:

/*
5: 0101
8: 1000
--------
*x:1101  
8: 1000
--------
*y:0101  --5
*x:1101
--------
*x:1000  --8 
*/