交换两个数的方法总结
2014-11-12 20:40
183 查看
今天总结一下交换两个数的方法,以前自己只会一种,最近在准备招聘会,分享一下自己的所获;
方法1:使用函数传址:
方法二:在C++中传引用
方法三:不使用中间变量
方法四:上述代码可能会产生溢出,改进为
其中if判断是必须的,否则当有多个数或者两个数相等时会改变原来的值。
方法五:使用宏定义1
方法六:使用宏定义2
do{......}while(0)用于封装语句序列并确保正确性。
方法1:使用函数传址:
void swap(int *p1, int *p2) { int tmp; tmp = *p1; *p1 = *p2; *p2 = tmp; }
方法二:在C++中传引用
void swap(int &x, int &y) { int tmp ; tmp = x; x = y; y = tmp; }
方法三:不使用中间变量
void swap(int a, int b) { a = a+b; b = a-b; a = a-b; }
方法四:上述代码可能会产生溢出,改进为
void swap(int *p1, int *p2) { if(*p1 != *p2) { *p1 ^= *p2; *p2 ^= *p1; *p1 ^= *p2; } }
其中if判断是必须的,否则当有多个数或者两个数相等时会改变原来的值。
方法五:使用宏定义1
#define SWAP(a, b) {if((a) != (b)) {(a)=(a)+(b);(b)=(a)-(b);(a)=(a)-(b);}}
方法六:使用宏定义2
#define SWAP(a, b) {if((a) != (b)) {(a) ^= (b);(b) ^= (a);(a) ^= (b);}}
#define SWAP(a, b) do{if((a) != (b)) {(a) ^= (b);(b) ^= (a);(a) ^= (b);}}while(0)
do{......}while(0)用于封装语句序列并确保正确性。
相关文章推荐
- 交换两个数的方法总结
- 比较两个数的大小,交换两个数的 方法总结
- 交换两个数方法总结
- C++中几种不同交换两个数的方法
- 2、从传引用和传地址方法交换两个数
- 两个数交换的三种方法
- 不用第三方参数交换两个数的方法
- 变量值的交换方法总结
- 学习python(6)数据交换的几点方法总结
- 关于c语言中交换两个数的方法
- 交换两个数的三种方法
- 不使用第三方变量,按位操作最快的交换两个数的方法
- 玩玩小技巧(1)_三种方法不使用临时变量交换两个数的值
- 变量值的交换方法总结
- 用引用方法交换两个数的值
- 变量值的交换方法总结
- 交换两个变量的方法总结
- C/C++中定义一个宏用以交换两个数(总结自CSDN)
- 两种交换两个数方法
- [黑马程序员]对两个整数变量的值进行交换的方法总结