C++ swap宏

http://bbs.csdn.net/topics/330252958

目前了解到的有SWAP(val1, val2)三种,各有优缺点

#define SWAP(x, y) \
            do     \
            {      \
                (x) = (x) ^ (y) \
                (y) = (x) ^ (y); \
                (x) = (x) ^ (y); \
            } while (0)

#define SWAP(a, b) \
            do     \
            {      \
                typeof(a) tmp; \
                tmp = (a);     \
                (a) = (b);     \
                (b) = tmp;     \
            } while (0)

#define SWAP(m, n) \
            do     \
            {      \
                (x) = (x) - (y)\
                (y) = (x) - (y)\
                (x) = (x) + (y)\
            } while (0)

第一种:优点有,不用担心数据交换过程中出现溢出
        缺点有,不能实现float型数据的交换(无法处理含小数点数据)

第二种:优点是,相对第一种而言,他可以进行更多类型的数据交换
        缺点是,有少数编译器不支持typeof 关键字的用法

第三种:优点是,相对第二种而言,他不收编译器的限制,可以进行多种类型数据交换
        缺点是,在想x + y或x - y 过程中可能会溢出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值