以下代码利用中间变量temp交换两数
#include <stdio.h>
main()
{
int x,y,temp;
scanf("%d%d",&x,&y);
printf("x=%d,y=%d/n",x,y);
temp=x;
x=y;
y=temp;
printf("x=%d,y=%d/n",x,y);
}
写出不用第三变量交换x和y值的算法
用算术或异或
x = x + y;
y = x - y;
x = x - y;
或
x = x^y;// 只能对int,char..
y = x^y;
x = x^y;
或
x ^= y ^= x;
#include <stdio.h>
main()
{
int x,y,temp;
scanf("%d%d",&x,&y);
printf("x=%d,y=%d/n",x,y);
temp=x;
x=y;
y=temp;
printf("x=%d,y=%d/n",x,y);
}
写出不用第三变量交换x和y值的算法
用算术或异或
x = x + y;
y = x - y;
x = x - y;
或
x = x^y;// 只能对int,char..
y = x^y;
x = x^y;
或
x ^= y ^= x;
![](https://i-blog.csdnimg.cn/blog_migrate/5a23052a871149843d8fe34672e1bd7a.gif)