很多时候我们在交换两个变量的时候通常都会创建一个临时变量来交换两个变量
int main()
{
int a=1,b=0;
int temp;
temp=a;
a=b;
b=temp;
}
那如何能够不创建临时变量,同时交换两个变量呢?
这里有两种方法:
int swap1(int* x,int* y)//法一 缺点是*x=*x+*y 此时x的大小限制更多
{
*x=*x+*y;
*y=*x-*y;
*x=*x-*y;
}
int swap2(int*x,int*y)//法二
{
*x=*x^*y;
*y=*x^*y;
*x=*x^*y;
}
int main()
{
int a=1;
int b=0;
printf("%d %d\n",a,b);
swap1(&a,&b);
printf("%d %d\n",a,b);
swap2(&a,&b);
printf("%d %d\n",a,b);
}
具体我们来看下效果把: