三种方法如下:
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;
}
运行结果如下

我这种菜鸟也只能默默的说一句位运算好神奇啊!!!
本文介绍了三种不使用额外变量交换两个整数的方法。方法一和二可能因整数溢出而失败,方法三采用位运算成功实现了数值交换。文章通过实例展示了不同方法的效果。
498

被折叠的 条评论
为什么被折叠?



