1.创建临时变量
这个方法是最快最简单的方法(不过稍稍有点low啦)
#include
int main ()
{
int a = 5;
int b = 15;
int temp = 0;
printf("初始值: a=%d, b=%d\n",a,b);
temp = a;//temp=5
a = b;//a=15
b = temp;//b=5
printf("交换后: a=%d, b=%d\n",a,b);
return 0;
}
2.不定义临时变量,利用a和b差值(用加减乘除)进行交换,代码如下:
#include
int main ()
{
int a = 5;
int b = 15;
printf("初始值: a=%d, b=%d\n",a,b);
a = a-b;//a=-10
b = b+a;//b=5
a = b-a;//a=15
printf("交换后: a=%d, b=%d\n",a,b);
return 0;
}
不过这种方法会产生数值溢出问题,下面来看一下不溢出的方法
3.异或交换
通过异或(对两个数二进制各个比特位进行异或,相同为0,相异为1)的方法对a和b的值进行交换,代码如下:
#include
int main ()
{
int a = 5;
int b = 15;
printf("初始值: a=%d, b=%d\n",a,b);
a ^= b;
b ^= a;
a ^= b;
printf("交换后: a=%d, b=%d\n",a,b);
return 0;
}
异或:一般是针对二进制来说,如果两个二进数不相同,则异或结果为1;相同为0.
这种方法和上面第二种类似,但却更严谨。不会产生进位或借位,不会超出变量的表示范围。
当然,方法还有很多,通过后续的学习,我会继续优化,并且掌握更高级的方法,希望能与大家多多交流。