1. 加减法
给出两个变量
a =10,b=20;
让a = a+b,那么a=30;
让b = a - b,那么b=10;
让a = a - b,那么a=20;
如此,没有创建临时变量就交换了
a
和
b
的值。
int i = 10;
int j = 20;
printf("i=%d j=%d\n", i, j);
i = i + j;
j = i - j;
i = i - j;
printf("i-%d j=%d\n", i, j);
2. 异或法
和加减法差不多,异或法原理也是如此。
1. 创建两个变量a=10,b=20;
2. a=a^b, 那么a=30;
3. b=a^b, 那么b=10;
4. a=a^b, 那么a=20;
int i = 10;
int j = 20;
i = i^j;
j = i^j;
i = i^j;
printf("%d, %d\n", i, j);
加减法的缺点就是有可能溢出。