交换两个数的方法总结
2012-06-22 14:52
281 查看
方法一:使用宏
方法二:使用第三个变量
方法三:利用布尔环的属性,加法逆元。
方法四:利用整数运算的属性。
第四种方法关于存在溢出的问题,补码加上形成一个阿尔贝群,以及表达式(x+y)-x求值得到y,无论加法是否溢出,而 (x+y)-y总是会求值得到x。
#define Exchage(a, b) \ do{ \ a += b;\ b = a - b; \ a = a - b \ }while(0)
方法二:使用第三个变量
void inplace_swap(int *a, int *b) { int tmp; tmp =*a; *a = *b; *b = tmp; }
方法三:利用布尔环的属性,加法逆元。
void inplace_swap(int *x, int *y) { *y ^= *x; *x ^= *y; *y ^= *x; }
方法四:利用整数运算的属性。
void inplace_swap(int *a, int *b) { *a = *a + *b; *b = *a - *b; *a = *a - *b; }
第四种方法关于存在溢出的问题,补码加上形成一个阿尔贝群,以及表达式(x+y)-x求值得到y,无论加法是否溢出,而 (x+y)-y总是会求值得到x。
相关文章推荐
- 交换两个数方法总结
- 交换两个数的方法总结
- 比较两个数的大小,交换两个数的 方法总结
- C语言进阶之N种方法实现两个数的交换
- 交换两个数的几种方法
- 玩玩小技巧(1)_三种方法不使用临时变量交换两个数的值
- 将两个数交换的几种方法
- 用宏定义的方法交换两个数的位置#define SWAP(T,m,n) {T s; s=m, m=n, n=s;}解释T s的意思
- 交换两个数的三种方法
- 程序员面试金典——解题总结: 9.17中等难题 17.1编写一个函数,不用临时变量,直接交换两个数
- 变量值的交换方法总结
- 位运算和关于两个数交换的多种方法
- 关于c语言中交换两个数的方法
- 2、从传引用和传地址方法交换两个数
- 用多种方法交换两个数的值(转载)
- 变量值的交换方法总结
- 判断闰年,用三种不同的方法交换两个数的值
- 交换两个数的三种方法
- C/C++中定义一个宏用以交换两个数(总结自CSDN)
- 两个数交换的三种方法