宏定义交换两个变量值的陷阱
来源:互联网 发布:sql 默认值绑定到表中 编辑:程序博客网 时间:2024/04/28 00:52
宏定义交换两个变量,没有中间暂存变量的一种方法如下:
#define swap(a,b) {a ^=b; b ^=a; a ^=b;}
如果a和b是两个不同的变量时,这样写是没有问题的,但是我们在给数组排序时可能会交换数组中两个元素的值,swap(array[i], array[j]), 当i==j 时,就会出现两个变量相同的情况了,这时调用这个宏交换后array[i] = 0 了,可以理解为 swap(array[i], array[i]) array[i] ^= array[i];array[i] ^= array[i];array[i] ^= array[i];这样异或运算的结果就是0了。
0 0
- 宏定义交换两个变量值的陷阱
- 交换两个变量值
- 交换两个变量值
- 两个变量值的交换legend
- 交换两个变量值引发的感想
- 交换两个变量值的方法
- 两个变量值的交换方法
- 交换两个变量值的方法
- 交换两个变量值的常用方法
- Java 交换两个变量值
- 两个变量值交换java
- 不使用中间变量,实现两个变量值的交换
- 实现两个变量值交换的三种方法
- 交换两个变量值的三种方法
- 不使用临时变量,实现两个变量值的交换
- 关于Java 调用函数进行两个变量值的交换
- 应用:用函数实现两个变量值的交换
- JavaScript交换两个变量值的四种方法
- hdu3631(floyd入门)
- PHP+JavaScript 实现图片无刷新上传
- react组件化开发关于events库的解读
- 3677: [Apio2014]连珠线
- 1085. Perfect Sequence (25)
- 宏定义交换两个变量值的陷阱
- App外包流程,2017最新
- Spring MVC 参考文档
- MySQL学习(二)DQL 加强,多表查询
- 简述unity中Instantiate实例化函数的使用
- C++智能指针shared_ptr剖析
- 用数组去实现队列(c)
- linux下notify机制(仅用于内核模块之间的通信)
- 我的第一篇博客