两种方法用宏定义写出swap(x,y)
2015-10-30 11:25
281 查看
问题引出:
如何将a,b交换,且不使用任何中间变量?
方法一:算术运算法
方法二:逻辑运算法
若采用宏定义完成此功能,对应有2种方法,如下示例代码:
结果如下图:
注意:
对于swap1,当输入的数据是不同种类型的话,这个宏的结果是不对的。
对于swap2,只适用于整型数据。
如何将a,b交换,且不使用任何中间变量?
方法一:算术运算法
a=a+b; b=a-b; a=a-b;
方法二:逻辑运算法
a=a^b; b=a^b; a=a^b;
若采用宏定义完成此功能,对应有2种方法,如下示例代码:
</pre><pre name="code" class="html">#include<iostream> using namespace std; //宏定义swap(x, y),使之完成交换x,y的值 #define swap1(x, y) \ (y) = (x) + (y); \ (x) = (y) - (x); \ (y) = (y) - (x); #define swap2(x, y)\ x = x^y;\ y = x^y;\ x = x^y; int main() { int a = 3, b = 5; cout<<a<<","<<b<<endl<<endl; swap1(a, b); cout<<a<<","<<b<<endl<<endl; swap2(a, b); cout<<a<<","<<b<<endl; return 0; }
结果如下图:
注意:
对于swap1,当输入的数据是不同种类型的话,这个宏的结果是不对的。
对于swap2,只适用于整型数据。
相关文章推荐
- 浅谈内联函数与宏定义的区别详解
- C语言中的内联函数(inline)与宏定义(#define)详细解析
- 基于C中含有if的宏定义详解
- 内联函数inline与宏定义深入解析
- C语言中宏定义使用的小细节
- C/C++宏定义的可变参数详细解析
- ios开发中,比较实用的全局宏定义分享
- 特殊的宏定义
- C语言 内联函数和宏定义
- iOS单列两种宏定义
- 2015年3月31日 开始
- C++内联函数与C语言宏的比较
- 操作系统和编译器宏定义
- 定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
- 20131012宏定义的补充说明
- 关于typedef int (*ADDPROC)(int a, int b)
- typedef 与宏定义的区别
- C++利用宏动态命名变量名
- 黑马程序员——C语言日志——宏定义#define
- C++宏定义详解