对于数值的交换操作,通常会采用第三个变量作为中间变量过渡的交换方式。
temp=a;
a=b;
b=temp;
使用这种方法,可以保证交换的准确性,但是由于会使用第三个变量,占用了额外的内存空间。
那么有没有办法不借助第三个变量实现两个数值的交换呢?可以通过数值相加寄存和位运算两种方式。
1、相加寄存:
可以将sum=a+b的值暂时寄存到a变量上,由于a=sum-b,所以可以将a值放置到b上,又由于b=sum-a,可以将b值移动至a,实现a,b的交换。
a=a+b;
b=a-b;
a=a=b;
通过这种方式可以再不引入新的变量的情况下实现交换,但是当a+b>INT_MAX时,此时会产生正溢出,导致最终结果错误。
2、位运算: