1 void inplace_swap(int *x, int *y)
2 {
3 *y = *x ^ *y;
4 *x = *x ^ *y;
5 *y = *x ^ *y;
6 }
posted on 2012-05-29 13:58
canaan 阅读(1740)
评论(6) 编辑 收藏 引用 所属分类:
算法
FeedBack:
# re: 不使用中间变量交换两个整型值的方法(不会溢出) 2012-05-29 14:09
# re: 不使用中间变量交换两个整型值的方法(不会溢出) 2012-05-29 14:45
@匿名
确实是这样的,要避免相同地址的整数进行交换运算
否则结果会变成0
回复 更多评论
# re: 不使用中间变量交换两个整型值的方法(不会溢出) 2012-05-30 05:47
# re: 不使用中间变量交换两个整型值的方法(不会溢出) 2012-05-30 08:47
# re: 不使用中间变量交换两个整型值的方法(不会溢出) 2012-05-30 09:00
# re: 不使用中间变量交换两个整型值的方法(不会溢出)
2012-05-31 09:01
一个是地址相同会出问题
另一个是一般这个应该写成
#define swap(x, y) ((x) ^= (y) ^= (x) ^= (y))
回复 更多评论