#include方法二:两数相加减int main() { int a = 3; int b = 5; int tmp = 0; tmp = a; a = b; b = tmp; printf("%d %dn", a, b); return 0; }
#inclide方法三:按位异或int main() { int a = 3; int b = 5; a = a + b; b = a - b; a = a - b; printf("%d %dn", a, b); return 0; }
#include二、详细讲解 方法一:创建临时变量int main() { int a = 3; int b = 5; a = a ^ b; b = a ^ b; a = a ^ b; printf("%d %dn", a, b); return 0; }
int main()
{
int a = 3;
int b = 5;
int tmp = 0;//临时变量
tmp = a;//将a的值先放在临时变量,tmp是3
a = b;//将a的值换成b的值,a是5
b = tmp;//将b的值改为临时变量的值,b是3
//小提示:觉得绕的时候,记住一句话“等号右边的值决定等号左边的值”
printf("%d %dn", a, b);
return 0;
}
创建临时变量的使用率最高,也最通俗易懂。
方法二:两数相加减#inclideint main() { int a = 3; int b = 5; a = a + b;//a = 3 + 5 = 8 b = a - b;//b = 8 - 5 = 3 a = a - b;//a = 8 - 3 = 5 printf("%d %dn", a, b); return 0; }
两数相加减存在溢出的问题,比如a+b大于int类型的存储空间,那么计算出来就不是我们想要的结果了。
方法三:按位异或#includeint main() { int a = 3; int b = 5; //按位异或^这个操作符的操作规则是:相同为0,相异为1。 //3的原码是:00000000000000000000000000000011 //5的原码是:00000000000000000000000000000101 //3^5的结果:00000000000000000000000000000110 a = a ^ b;//a = 110 b = a ^ b;//b = 011 =3 a = a ^ b;//a = 101 =5 printf("%d %dn", a, b); return 0; }
按位异或的代码的可读性不够好而且只适用于整形。(也就是不通俗易懂还不能广泛应用)



