/***********************************************************************
目的:不能创建临时变量(第3个变量),实现2个数的交换
分析:
▶ 借助2数之和与变量的运算:
▶ 使用异或’^’:
平台:Visual studio 2017 && windows
*************************************************************************/
📝 实现代码1:
#include<stdio.h> int main() { int a = 3; int b = 5; printf(a = %d b = %d\n", a, b);//3 5 a = a + b; b = a - b; a = a - b; printf(a = %d b = %d\n", a, b);//5 3 return 0; }
这种写法是有问题的:当这2个数足够大时,相加可能会造成数值溢出
📝 实现代码2:
#include<stdio.h> int main() { int a = 3; int b = 5; printf("a = %d b = %d\n", a, b);//3 5 a = a ^ b;//以下的括号没有任何意义 b = a ^ b;//(a ^ b) ^ b -> a a = a ^ b;//(a ^ b) ^ ((a ^ b) ^ b) -> b printf(a = %d b = %d\n", a, b);//5 3 return 0; }