C/C++中不申请第三个变量数值交换的两种方法
2019-07-17 本文已影响0人
我是恐龙_35b2
(1)采用数学知识
#include<stdio.h>
int main()
{
int a, b;
scanf("%d%d", &a, &b);
a = a + b;
b = a - b;
a = a - b;
printf("%d %d\n", a, b);
return 0;
}
(2)利用C语言的位运算符
#include<stdio.h>
int main()
{
int a, b;
scanf("%d%d", &a, &b);
a = a ^ b;
b = a ^ b;
a = a -^b;
printf("%d %d\n", a, b);
return 0;
}
这个方法还可以进一步简写成 a ^ = b ^ = a ^ = b。其实第二种方法只是第一种方法的一个变种。
这两个方法看起来很好(少用一个变量),但实际上很少使用,因为它的适用范围很窄:只有定义了加减法的数据类型才能采用此方法。事实上,并不推荐采用这样的技巧实现变量交换:三变量法已经足够好,这个例子只是能在特定的场合下使用以及帮助读者提高程序阅读能力。