1.这是借助第三个变量进行交换
#include<stdio.h>
int main()
{ int a = 3;
int b = 5;
int c = 0;
printf("交换前a=%d,b=%d", a, b);
c = a;
a = b;
b = c;
printf("交换后a=%d,b=%d", a, b);
return 0;
}
优化***没有借助第三个变量
#include<stdio.h>
int main()
{
int a = 3;
int b = 5;
printf("交换前a=%d b=%d", a, b);
a = a + b;//a与b的和,***有局限性a+b有可能会溢出
b = a - b;//b就就是原来的a
a = a - b;//a就是原来的b
printf("交换后a=%d b=%d", a, b);
return 0;
}
****继续优化
#include<stdio.h>
int main()
{
int a = 3;
int b = 5;
printf("交换前a=%d b=%d", a, b);
//“^”这个小尖尖是按二进制异或(相同为0,相异为1)
a = a^b;
b= a^b;
a = a^b;
printf("交换后a=%d b=%d", a, b);
return 0;
}