关于用VC++不加入中间变量,交换两个整型数.

来源:百度知道 编辑:UC知道 时间:2024/05/21 09:43:51
比如有两个int a=10 int b=20不加入中间变量int temp如何使a,b 两数的值进行交换?谢谢各位高手指点帮助小弟,感激不尽!!!

交换两个变量的值,不使用第三个变量。即a=10,b=20,交换之后a=20,b=10;
有两种解法, 一种用算术算法, 一种用^(异或)
a = a + b;
b = a - b;
a = a - b;

a = a^b;// 只能对int,char..
b = a^b;
a = a^b;

a ^= b ^= a;

搞定!
#include "stdio.h"
void main()
{
int a, b ;

a=10;
b=20;
a^=b ;
b^=a ;
a^=b ;
printf("a=%d,b=%d\n",a,b);
}

a=a+b;/*a=30,b=20*/
b=a-b;/*a=30,b=10*/
a=a-b;/*a=20,b=10*/

#include "stdio.h"
void main()
{
int a, b ;
a=10;
b=20;
a<<1;//a左移一位相当于乘2
b>>1; //a右移一位相当于除2
printf("a=%d,b=%d\n",a,b);
}

a^=b^=a^=b ;
这样写最简单了

b=a+b;
a=b-a;
b=b-a;
成吧?