(1)法一:使用加法
a += b; b = a - b; a = a-b;
void Swap1(int *p1,int *p2)
{
*p1+=*p2;
*p2=*p1-*p2;
*p1=*p1-*p2;
}(2)法二:使用减法
a=a-b; b=a+b; a=b-a;
void Swap2(int *p1,int *p2)
{
*p1=*p1-*p2;
*p2=*p1+*p2;
*p1=*p2-*p1;
}(3)进行异或
a =a^ b; b=a^ b; a = a^b;
void Swap2(int *p1,int *p2)
{
*p1=*p1^*p2;
*p2=*p1^*p2;
*p1=*p1^*p2;
}以上三种方法可以在不使用第三个变量的情况下实现两个数的交换,但有溢出风险。
进行两个数的交换,最好还是使用第三个变量。即:
void Swap(int *p1,int *p2)
{
int tmp;
tmp=*p1;
*p1=*p2;
*p2=tmp;
}
int main()
{
int a=20;
int b=15;
Swap(&a,&b);
printf("%d,%d\n",a,b);
}版权声明:本文为kimEHEH原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。