关于c语言中交换两个数的方法
来源:互联网 发布:数据分析报表 编辑:程序博客网 时间:2024/05/11 09:49
#include<stdio.h>#define SWAP2(a,b) \{ \ a = a + b; \ b = a - b; \ a = a - b; \}#define SWAP3(a,b) \{ \ a = a ^ b; \ b = a ^ b; \ a = a ^ b; \}void swap1(int *a,int *b){int t;t=*a;*a=*b;*b=t;}void swap2(int* a,int* b){*a=*a+*b;*b=*a-*b;*a=*a-*b;}void swap3(int *a,int *b){*a^=*b;*b^=*a;*a^=*b;}int main(){ int a = 1; int b = 2; printf("a=%d,b=%d\n",a,b); SWAP1(a,b); printf("a=%d,b=%d\n",a,b); SWAP2(a,b);printf("a=%d,b=%d\n",a,b); SWAP3(a,b);printf("a=%d,b=%d\n",a,b); swap1(&a,&b);printf("a=%d,b=%d\n",a,b); swap2(&a,&b);printf("a=%d,b=%d\n",a,b); swap3(&a,&b);printf("a=%d,b=%d\n",a,b); return 0;}
总结:SWAP1-3中“\”为连接符,在其后不能有空格或其它字符;用宏定义的方法使得数据交换比函数更有效率,swap1-3实质上是SWAP1-3的函数形式.
第一种很好理解,缺点是定义了第三个新变量
第二种优点是只使用了两个变量,缺点是a+b的值可能会超出Int范围,使计算结果错误
第三种方法不仅克服上以上的缺点,还使得程序运行最有效率。但其缺点也显而易见,只能用于整型数据的交换。
第三种方法的理解可以这样理解:任意的两个数a,b有a^(a^b)=(a^a)^b=b.
- 关于c语言中交换两个数的方法
- 关于C语言中交换两个数的代码探讨
- C语言中交换两个数的方法
- 关于C语言交换两个数的实现方法以及个人心得
- c语言:多种方法实现两个数的交换
- C语言中有关两个数,值的交换
- c语言--交换两个数的函数
- C语言交换两个数的值
- 【C语言】交换两个数的内容
- 交换两个数的C语言程序
- C语言交换两个数的值
- C语言中交换两个变量数值的方法
- C语言-交换两个数
- c语言两个数交换
- 【C语言】交换两个数
- C语言交换两个数
- C语言两个数交换
- C语言或者Object-C交换两个数的值
- django中自定义orm,修改默认规则
- iframe自动高度 12306
- 在 NetBeans IDE 中调试 PHP 源代码
- django的通用视图 (generic views)
- 破解工具
- 关于c语言中交换两个数的方法
- According to TLD, tag s:property must be empty, but is not
- 额外分为二个人题外话
- ViewPager实现引导界面以及进入下一个activity解决办法
- 客户端套接字(Socket)的超时
- OGRE框架杂谈(二)
- IT人的学习方法论(全)
- jquery控制css的display(控制元素的显示与隐藏)
- OGRE 框架杂谈(一)