方法一:加减法
我们可以不断交换值,利用加法与逻辑关系去实现不创建第三个变量交换a和b的值,代码如下:
#include <stdio.h>
int main()
{
int a = 3;
int b = 5;
printf("变换前:a=%d b=%d\n",a,b);
a = a+b;//把相加的值赋给a;
b = a-b;//b通过减法操作改变为原来a的值;
a = a-b;//a最后变为原来b的值;
printf("变换后:a=%d b=%d\n",a,b);
return 0;
}
最后的运行结果即是我们所希望的:
不过,加减法有一个缺点:因为是两数相加,所以可能值会溢出。
方法二:异或操作符的应用
逻辑思维与加减法相同,但是,通过异或操作符^,可能代码更加高级,逻辑思维能力更加优秀,分数可能也会更高,代码如下:
#include <stdio.h>
int main()
{
int a = 3;
int b = 5;
printf("变换前:a=%d b=%d\n",a,b);
a = a^b;
b = a^b;
a = a^b;
printf("变换后:a=%d b=%d\n",a,b);
return 0;
}
原理是这样的:
这样一来,也不会产生溢出的不必要的一些麻烦,实现了不使用第三变量,交换两整型数据的效果。