交换两个变量的值
method1
方法:借助中间变量
#include <stdio.h>
int main()
{
int m = 10;
int n = 20;
//交换前两数的值
printf("交换前:m = %d, n = %d\n", m, n);
//交换
int temp = m;
m = n;
n = temp;
//交换后两数的值
printf("交换后:m = %d, n = %d\n", m, n);
return 0;
}
method2
方法:基于加减法的交换
#include <stdio.h>
int main()
{
int m = 10;
int n = 20;
//交换前两数的值
printf("交换前:m = %d, n = %d\n", m, n);
//交换
m = m + n;
n = m - n;
m = m - n;
//交换后两数的值
printf("交换后:m = %d, n = %d\n", m, n);
return 0;
}
-
缺陷:两数相加后可能会数值溢出
-
优点:节省内存空间
-
示例:
method3
方法:借助位运算符 ^
按位异或
#include <stdio.h>
int main()
{
int m = 10;
int n = 20;
//交换前两数的值
printf("交换前:m = %d, n = %d\n", m, n);
//交换
m = m ^ n;
n = m ^ n;
m = m ^ n;
//交换后两数的值
printf("交换后:m = %d, n = %d\n", m, n);
return 0;
}
-
优点:运算速度快,节省内存空间,且不会数值溢出
-
示例: