1.给定俩个整形变量m,n的值,创建临时变量,使用中间变量i,将俩个值的内容进行交换。
#include <stdio.h>
#include <windows.h>
int main()
{
int m=10;int n=15;
int i=0; //创建中间变量
printf("before: m=%d n=%d\n",m,n);
i=m; //使用中间变量将俩个值交换
m=n;
n=i;
printf("after : m=%d n=%d\n",m,n);
system("pause");
return 0;
}
2.利用加减运算法则,原理:m=m+n-n,n=m+n-m。
#include <stdio.h>
#include <windows.h>
int main()
{
int m=10;int n=15;
int i=0;
printf("before: m=%d n=%d\n",m,n);
m=m+n; //此时m的值为m+n
n=m-n; //此时n的值为m+n-n,即n=m,将m的值赋给n
m=m-n; //此时m的值为m+n-m,即m=n,将n的值赋给m,完成俩个数值的交换
printf("after : m=%d n=%d\n",m,n);
system("pause");
return 0;
}
3.异或法。异或是一种运算符,用^表示。
异或可通俗的理解为相异为1,相同为0。(在二进制按位异或的情况下)
现在我们举一个用异或交换俩个数值的例子:
交换前:a:6(二进制表示为110) b:5(101)
交换法则为:
a=a ^ b (a=110 ^ 101 = 011) 注意现在a = 011!
b=a ^ b (b=011 ^ 101 = 110)
a=a ^ b (a=011 ^ 110 = 101)
交换后:a:101 b: 110
#include <stdio.h>
#include <windows.h>
int main()
{
int m=10;int n=15;
printf("before: m=%d n=%d\n",m,n);
m=m ^ n;
n=m ^ n;
m=m ^ n;
printf("after : m=%d n=%d\n",m,n);
system("pause");
return 0;
}