c语⾔中经典变量交换法
1.临时变量法(最实⽤)
⽅法解释:采⽤临时变量的⽅法,作为中间过渡,这是最简单也是⼤家最容易想到的⽅法,此法在各种场合应⽤极多,应该熟练掌握。
#include
int main(void)
{
int a=1,b=2,tmp;
tmp =a;
a=b;
b=tmp;
printf("%d %d",a,b);
return 0;
}
2.加减交换法
⽅法解释:顾名思义,使⽤数学中的加减法进⾏交换,先把a+b的结果暂时先保存在变量a中,然后通过这改变后的a和原始的b进⾏减法就可以得到交换后的b,缺点是a+b的结果可能越界。
#include
int main(void)
{
int a=1,b=2;
a = a + b;
b = a - b;
a = a - b;
printf("%d %d",a,b);
return 0;
}
3.乘除交换法
⽅法解释:该⽅法与加减法类似,就是把加减替换为乘除,缺点是因为采⽤了乘法,因此⽐加法更容易越界,使⽤时应谨慎。
#include
int main(void)
{
int a=1,b=2;
a = a * b;
b = a / b;
a = a / b;
printf("%d %d",a,b);
return 0;
return在c语言中是什么意思}
4.异或交换法
⽅法解释:巧妙使⽤异或运算来进⾏交换,这种⽅法主要利⽤了异或的特性a^b的值先保存到a,因为a^b^b=a所以可以顺利完成交换,这种⽅法是很完美的,不存在越界的问题。
#include
int main(void)
{
int a=1,b=2;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("%d %d",a,b);
return 0;
}
5.移位交换法
⽅法解释:这种⽅法不太常⽤,原理是把原来的int类型的a的值拆分成⾼16位和低16位,相当于多了16位的暂存空间可以周转,缺点是如果a或者b超过了16位,这种⽅法就会出错,此⽅法较复杂且容易出错,因此不建议⼤家使⽤。
#include
int main(void)
{
int a=1,b=2;
a <<= 16;
a |= b;
b = a >> 16;
a = a & 0xffff;
printf("%d %d",a,b);
return 0;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论