一、创建第三个变量交换两个值
这种办法是最普通最直观的。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a=1,b=8;
int c=0;
c=a;
a=b;
b=c;
printf("%d %d\n",a,b);
system("pause");
return 0;
}
二、不创建第三个变量交换两个值
可以通过三种方法实现:
1.按位异或
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a=1,b=8;
a=a^b; //先将a,b异或的值赋给a
b=a^b; //b的值为最初a的值(此时已经发生交换)
a=a^b; //a的值为最初b的值(此时已经发生交换)
printf("%d %d\n",a,b);
system("pause");
return 0;
}
2.使用 加减 或者 乘除
这种方法实质上和“按位异或”是一样的,例如:
加减:
n1=n1+n2;
n2=n1-n2;
n2=n1-n2;
乘除和加减一样(此时n2不能等于0),但是,使用这种方法时应该注意:这两种方法都会有数据的溢出(当数据特别大时),因此在此时得到结果就会与想的不同。而利用异或的方法就不会。因此建议使用“按位异或”