不借用第三变量,互换两个变量
程序员文章站
2022-06-24 08:11:35
下面列出几种方法: 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 }