目录
1.创建临时变量进行交换
int main() {
int a = 3;
int b = 5;
int tmp = 0;
printf("%d %d\n", a, b);
tmp = a;
a = b;
b = tmp;
printf("%d %d\n", a, b);
return 0;
}
2.通过两数相加或相减来进行交换
int main() {
int a = 3;
int b = 5;
int tmp = 0;
printf("%d %d\n", a, b);
a = a + b;
b = a - b;
a = a - b;
printf("%d %d\n", a, b);
return 0;
}
但是这种方法存在一定的弊端,当两个数很大时,可能a+b超出了该类型的大小上限,导致交换失败。
3.使用^异或操作符来进行交换
首先我们先要知道什么是异或操作符,如果不清楚可以看一下我上一节的知识:操作符详解(1)
然后我们先来看几个问题:
a^a=
a^0=
我们知道,异或是将每个二进制位进行比较,相同时为0,不同时为1,当一个数与它本身进行异或操作时,每一位都相同,所以值等于0.
当一个数与0进行异或操作时,得到的值为它本身。
所以,我们可以通过异或操作符来交换两个数字
int main() {
int a = 3;
int b = 5;
int tmp = 0;
printf("%d %d\n", a, b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("%d %d\n", a, b);
return 0;
}