1. 引入第三个变量
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 3;
int b = 5;
int c = 0;
printf("交换前:a=%d,b=%d\n", a, b);
c = a;
a = b;
b = c;
printf("交换后:a=%d,b=%d\n", a, b);
return 0;
}
引入一个中间变量c作为交换时的临时存储,相信这也是大多数人的第一想法。这种方法易于大多数人理解和接受,但是这种方法会使数据出现溢出。
2. 异或的操作
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 3;
int b = 5;
printf("交换前:a=%d,b=%d\n", a, b);
a = a^b;
b = a^b;
a = a^b;
printf("交换后:a=%d,b=%d\n", a, b);
return 0;
}
^按二进制位异或,相同为0,相反为1。
使用该方法的好处是没有引入第三个变量,并且数据不会出现溢出。
3. 两种方法比较
进入企业:会采用第三个变量的方法,因为代码的可读性高,执行效率高。
异或的操作:可读性差,执行效率低于其他方法。在不引入更多变量的要求下,推荐使用该方法。