//允许创建临时变量,交换两个整数的内容
#include <stdio.h>
int main()
{
int a = 10;
int b = 20;
int temp = 0;//临时变量temp
printf("a = %d b = %d\n", a, b);//交换前
//交换
temp = a;
a = b;
b = temp;
printf("a = %d b = %d\n", a, b);//交换后
return 0;
}
2.不允许创建临时变量,交换两个整数的内容
//不允许创建临时变量,交换两个整数的内容
#include<stdio.h>
//思路:ab交换就是相互赋值得到新的ab
int main()
{
int a = 10;
int b = 20;
printf("交换前:a = %d b = %d\n", a, b);
a = a ^ b;
//1010 -a
//1010 -a
//0000 0000 - 0 //两个同样的数异或得到0
//0001 0100 - b
//0001 0100 - a^a^b //0与任意数异或得到任意数本身
b = a ^ b;//相同为0,不同为1//a^b^b=a//将a赋值给b
//将b赋值给a即交换完成,现在b是a了
a = b ^ a;//相当于a^a^b = b//将b赋值给a
printf("交换后:a = %d b = %d\n", a, b);
return 0;
}