交换两个变量
目的:实现两个变量值的交换(以int 类型为例)。
方法一:使用临时变量。
优点:安全,适合任何类型数据交换,无溢出风险。
缺点:保守、效率不高,需要使用第三方临时变量(栈空间)。
1 void swap_value( int *var1, int *var2) 2 { 3 int tmp = 0; 4 5 tmp = *var1; 6 *var1 = *var2; 7 *var2 = tmp; 8 9 }
方法二:利用+ - 算术运算实现。
优点:不需要额外的临时变量。
缺点:有溢出风险。
1 void swap_value( int *var1, int *var2) 2 { 3 *var1 = *var1 + *var2; 4 *var2 = *var1 - *var2; 5 *var1 = *var1 - *var2 ; 6 7 }
方法三:利用位运算(异或)实现。
优点:不需要额外的临时变量,位操作效率高。
缺点:浮点型数据(浮点型数据储存方式比较特殊)无法交换。
1 /****异或******/ 2 /****A与B连续异或两次则 A = B****/ 3 4 0 ^ 1 = 1; 5 0 ^ 0 = 0; 6 1 ^ 0 = 1; 7 1 ^ 1 = 0;
1 void swap_value( int *var1, int *var2) 2 { 3 4 *var1 ^= *var2; 5 *var2 ^= *var1; 6 *var1 ^= *var2; 7 8 }
2016-01-14 by tid at shenzhen futian
深圳宝安华美居

浙公网安备 33010602011771号