两个值的内容进行交换以及优化
方法一:
#include<stdio.h>
intmain()
{
int a=5;
int b=3;
int c=0;
c=a;
a=b;
b=c;
printf("%d %d\n",a,b);
system("pause");
return 0;
}
方法二:
#include<stdio.h>
intmain()
{
int a=5;
int b=3;
a=a+b;
b=a-b;
a=a-b;
printf("%d %d\n",a,b);
system("pause");
return0;
}
方法三:
#include<stdio.h>
intmain()
{
int a=5;
int b=3;
a=a*b;
b=a/b;
a=a/b;
printf("%d %d\n",a,b);
system("pause");
return 0;
}
方法四:
#include<stdio.h>
intmain()
{
int a=5;
int b=3;
a=b^a;
b=a^b;
a=a^b;
printf("%d %d\n",a,b);
system("pause");
return 0;
}
方法二、方法三存在缺陷,存在越界的可能
方法五:传址调用
#include<stdio.h>
voidswap(int *pa,int*pb)
{
int tmp=*pa;
*pa=*pb;
*pb=tmp;
}
intmain()
{
int a=5;
int b=3;
swap(&a,&b);
printf("%d %d",a,b);
system("pause");
return 0;
}
注意:传值调用不会交换两个数值
#include<stdio.h>
voidswap(int a,int b)
{
int tmp=a;
a=b;
b=tmp;
}
intmain()
{
int a=5;
int b=3;
swap(a,b);
printf("%d %d",a,b);
system("pause");
return 0;
}