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 阅读(1806) 
评论(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))  
回复  更多评论