C/C++中定义一个宏用以交换两个数(总结自CSDN)
2011-08-15 16:41
746 查看
#define SWAP(X,Y) { (X)=(X)+(Y); (Y)=(X)-(Y); (X)=(X)-(Y); }
以上的做法没有采用中间变量,使用加减法来实现两个数的交换。
考虑到使用加减法时可能会出现溢出的情况,所以最好还是采用中间变量或者使用异或运算。
#define SWAP_2(A,B) { (A)=(A)^(B); (B)=(B)^(A); (A)=(A)^(B); } //将上面的SWAP_2(A,B)语句合并后可写成如下形式 #define SWAP_3(A,B) { (A)^=(B)^=(A)^=(B); }
相关文章推荐
- 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。
- 程序员面试金典——解题总结: 9.17中等难题 17.1编写一个函数,不用临时变量,直接交换两个数
- 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。
- 9.1 定义一个带参数的宏,使两个参数互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。
- C++交换两个数总结
- 22、C++用指针作函数参数,定义一个函数,并用函数交换两个整型变量的值
- 【LVL1_5_c】【课后练习】【4】 定义一个函数,交换两个数的值。(使用指针)
- C++中方法定义和调用需要注意的一个地方
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- C++调用Android函数弹出一个提示框中出现的问题总结
- 用c++编写一个不能被继承的类(但是可以在类外部定义该类的对象)
- 现有一个n个整数的序列,你要做的就是交换两个数的位置直到整个序列按照升序排列,那么将这个整数序列排好序,需要交换多少次?例如,1,2,3,5,4,我们只需要交换一次,即将5和4交换即可。
- C++中定义一个数组一定要给出长度吗?
- IDE使用问题:vc2003中类型无法转到声明和定义,按F12提示未定义的符号(CSDN一个帖子)
- C++ : 编译单元、声明和定义、头文件作用、防止头文件在同一个编译单元重复引用、static和不具名空间
- C++构造和析构定义的经验总结
- leetcode之92. Reverse Linked List II(C++读错题版本,交换一个链表中指定的两个位置上的元素)
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- C++使用异或运算实现交换两个数的值
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结