不使用临时变量,交换两个整数的值
方法一:
#include <stdio.h>
int main()
{
int a=2,b=3;
a=a+b;
b=a-b;
a=a-b;
printf("a=%d b=%d",a,b);
return 0;
}
这样我们就完成了数字的交换,但是这样的方法存在一个问题,就是会溢出,假设我们是两个特别大的数,这样我们两个数相加后,就会导致数据溢出,因此这样的方式不可取,接下来我们介绍方式二。
方法二:
#include <stdio.h>
int main()
{
int a = 2;
int b = 3;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a=%d b=%d", a, b);
return 0;
}
这里 ^ 符号为异或,相同为0,不同为1
这样我们就完美的交换了两个值!
但是这样的方式也有缺点,但不是bug!
缺点:可读性差,执行效率低!