本帖最后由 xiniuniu 于 2014-8-16 09:01 编辑
简单就是好的,我感觉 这样的交换不错,我们一眼就可以看出,是两个变量中的数据进行交换
同样不用第三方变量进行交换比较效率的还是使用异或的特性
- #include <stdio.h>
- int main(int argc, const char * argv[])
- {
- int a = 100;
- int b = 200;
- printf("交换前a = %d , b = %d\n", a, b);
-
- a ^= b;
- b ^= a;
- a ^= b;
-
- printf("交换后a = %d , b = %d\n", a, b);
- return 0;
- }
复制代码
虽然这个程序比较效率但可读性要差了一些。原理示例:如果a = 110b; b = 010b;(b表示二进制)
110 (a)
^ 010 (b) ------>第一次异或 a = 100 ; b= 010;
010 (b)
^ 100 (a) ------>第二次异或 a = 100; b= 110;
100 (a)
^ 110 (b) ------>第三次异或 a = 010 ; b= 110;
|