三种方法如下:
way 1 利用赋值a=a+b 交换a b的值
int main(int a, int b)
{
a = a+b;
b = a-b;
a = a-b;
printf("%d %d\n",a,b);
return 0;
}
way2利用赋值a = a*b 交换a b的值
int mian(int a, int b)
{
a = a * b;
b = a / b;
a = a / b;
printf("%d ",a,b);
return 0;
}
way1和way2 可能会出现数据溢出
用way2做一下测试
int main(int a, int b)
{
a = 10000000;
b = 20000000;
a = a * b;
b = a / b;
a = a / b;
printf("%d ",a,b);
return 0;
}
运行结果如下
没有实现数据的交换
way 1同样的道理 当a为三十亿,b为二十亿是 同样会出现数据溢出
way3 不清楚原理 但是可以实现数据的交换
int main(int a, int b)
{
a = 12345;
b = 65432;
a = a^b;
b = a^b;
a = a^b;
printf("%d %d\n",a,b);
return 0;
}
运行结果如下
我这种菜鸟也只能默默的说一句位运算好神奇啊!!!