不用中间变量交换两个数的陷阱
来源:互联网 发布:js 业务逻辑 模块 编辑:程序博客网 时间:2024/05/17 21:58
在面试题中会看到这样的代码:
int a = 1; 或 int a = 1;
int b = 2; int b = 2;
a ^ = b; a = a+b;
b^ =a; b = a-b;
a^ =b; a = a-b;
很明显,上面代码起到了交换两个数的作用,但却存在着陷阱,假设你交换的两个数其实是同一个数,即:
swap(a,a);
会出现这样:
int a=1;
a ^=a; a^=a; a^ =a; // a = 0;
int a = 1;
a = a+a; a=a-a; a= a-a; // a = 0;
我们是很少会写出swap(a,a),更多的时候在数组中没有加以控制。如果想像 上面那么用 ,首先判断两个数指向 的是不是同一个地址.
- 不用中间变量交换两个数的陷阱
- 不用中间变量交换两个数
- 不用中间变量交换两个数
- 不用中间变量交换两个数
- 不用中间变量交换两个数的值的方法
- 不用中间变量进行两个数的交换(C语言)
- 不用中间变量,交换两个数的值
- 不用中间变量交换两个数的值
- 不用中间变量实现两个数的交换
- 怎样不用中间变量temp 实现两个数交换
- 【C++】怎样不用中间变量temp 实现两个数交换
- 怎样不用中间变量temp 实现两个数交换
- 位操作(一)交换两个数不用中间变量
- 怎样不用中间变量temp 实现两个数交换
- 判断两个数值中最大的一个以及不用中间变量交换两个数
- 不用中间变量,交换两个变量的值的方法
- 不用中间变量,实现两个变量的交换
- 两个变量不用中间变量交换值的方法
- win7下安装Ubuntu10.04
- Html之【超链接<A>】综合技巧大全(持续更新中..)
- Html之【文字格式标签】综合技巧大全(持续更新中...)
- .Net中TextBox对于焦点的控制
- SendKeys.Send()的使用
- 不用中间变量交换两个数的陷阱
- DP(1) --- 数塔
- 【数据结构】链表
- 蛇形填 数
- 使用Eclipse WTP工具部署Maven管理的Web应用
- 水仙花数
- 项目延期原因及应对之道
- (1)21.1并发的多面性
- HDU 3231 Box Relations(拓扑排序)