1.基本介绍
交换两个数,想必大家都很熟悉,也很容易写出来就可以实现,即创建一个临时变量,就可以完成两个数的交换,然后更牛逼的大佬却不用临时变量就完成了两个数的交换,真的可谓:大佬啊!那是怎么实现的呢,其实就是用到了数之间的基本逻辑关系,互相倒腾就能实现,说难也不难,只是我们平时习惯了创建变量来交换,今天就大开眼界,涨涨知识。1.代码编写
1.异或(^)操作交换
void swapAB(int *a, int *b){
*a = *a^*b;
*b = *a^*b;
*a = *a^*b;
}
2.加减操作交换:
void swapAB(int *a, int *b){
*a = *a + *b;
*b = *a - *b;
*a = *a - *b;
}
3.创建临时变量交换
void swapAB(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}
下面是程序的完整代码,将三种方法得以验证。
#include<stdio.h>
#include<string.h>
#include<windows.h>
#pragma warning (disable:4996)
void swapAB(int *a, int *b);
int main()
{
int num1 = 0;
int num2 = 0;
printf("请输入两个数:");
scanf("%d %d",&num1,&num2);
printf("交换前的num1=%d num2=%d\n", num1, num2);
swapAB(&num1, &num2);
printf("交换后的num1=%d num2=%d\n",num1,num2);
system("pause");
return 0;
}
实验结果如下所示: