欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

不借用第三变量,互换两个变量

程序员文章站 2022-03-20 16:41:33
下面列出几种方法: 1)算术运算 它的原理是把A,B看作是数轴上的点,围绕两点间的距离来进行运算。 缺点:因为是int类型,有可能造成数据溢出。 2)指针地址操作 3)位运算 4)利用栈的先入后出实现 ......

下面列出几种方法:

1)算术运算

1 int a,b;
2 a=10;b=12;
3 a=b-a; //a=2;b=12
4 b=b-a; //a=2;b=10
5 a=b+a; //a=12;b=10

它的原理是把a,b看作是数轴上的点,围绕两点间的距离来进行运算。

缺点:因为是int类型,有可能造成数据溢出。

 

2)指针地址操作

 1 if(a<b){
 2 a=(int*)(b-a);
 3 b=(int*)(b-(int(a)&0x0000ffff));
 4 a=(int*)(b+(int(a)&0x0000ffff));
 5 }
 6 else{
 7 b=(int*)(a-b);
 8 a=(int*)(a-(int(b)&0x0000ffff));
 9 b=(int*)(a+(int(b)&0x0000ffff));
10 }

 

3)位运算

1 int a=10,b=12; //a=1010^b=1100;
2 a=a^b; //a=0110^b=1100;
3 b=a^b; //a=0110^b=1010;
4 a=a^b; //a=1100=12;b=1010;

 

4)利用栈的先入后出实现

1 int exchange(int x,int y) { 
2      stack s; 
3      push(s,x); 
4      push(s,y); 
5      x=pop(s); 
6      y=pop(s); 
7 }