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);加减法的缺点就是有可能溢出。
本文介绍两种不借助额外变量实现数值交换的方法:加减法和异或法,并讨论其适用性和潜在问题。
1383

被折叠的 条评论
为什么被折叠?



