c语言---实现两个数的交换的三个方法
创建临时变量交换两个整型
#include<stdio.h>
int main()
{
int a = 3;
int b = 5;
printf("before: a=%d b=%d\n", a, b);//3, 5
//创建临时变量
int tem = a;
a = b;
b = tem;
printf("after: a=%d b=%d\n", a, b);//5,3
return 0;
}
不创建临时变量交换两个整型(数据大可能会溢出)
#include<stdio.h>
int main()
{
int a = 3;
int b = 5;
printf("before: a=%d b=%d\n", a, b);//3, 5
a = a + b; //a=8
b = a - b; //b=8-5
a = a - b; //a=8-3
printf("after: a=%d b=%d\n", a, b);//5 ,3
return 0;
}
不创建临时变量交换两个整型(异或法)
异或:^
按二进制位抑或
相同为0,相异为1
#include<stdio.h>
int main()
{
` int a = 3;
int b = 5;
printf("before: a=%d b=%d\n", a, b);//3, 5
a = a ^ b;
//011 3
//101 5
//110
b = a ^ b;
//110
//101 5
//011 3
a = a ^ b;
//110
//011
//101 5
printf("after: a=%d b=%d\n", a, b);// 5, 3
return 0;
}``