1.创建临时变量
#include <stdio.h>
int main()
{
int a = 3, b = 4, c = 0;
printf("a=%d b=%d\n", a, b);
c = a;
a = b;
b = c;
printf("a=%d b=%d", a, b);
return 0;
}
这种创建临时变量的方法最简单,也最容易想到。
2.不创建临时变量
(1)加法
#include <stdio.h>
int main()
{
int a = 3, b = 4;
printf("a=%d b=%d\n", a, b);
a = a+b;
b = a-b;
a = a-b;
printf("a=%d b=%d", a, b);
return 0;
}
加法和乘法都能在满足条件的前提下实现结果,但是并没有考虑两个数相加或者相乘可能会产生数据的溢出。
(2)按位异或^(二进制序列按位异或,相同出零,相异出一)
#include <stdio.h>
int main()
{
int a = 3, b = 4;
printf("a=%d b=%d\n", a, b);
a = a^b;
/*a=0111. 具体计算: a=0011(三表示为二进制);
b=00100(四表示为二进制); 按位异或之后a=0111
(相异为一;相同为零) */
b = a^b; // b=0011
a = a^b; // c=0100
printf("a=%d b=%d", a, b);
return 0;
}
这种方法虽然不会产生数据的溢出,然而计算机执行起来的效率并不是很高。