C语言交换两个整型变量的值(多方法)
编译环境VS2017
值得注意的是:
1.异或法不会创建新变量,节省内存空间,但异或法只适用于int型
2.加减法不局限于变量类型,但可能存在溢出的可能,例如两个整型相加大于2147483647就会发生错误
3.创建临时变量法不局限于变量类型,也不会存在溢出问题,但相对其他两种方法多占用了内存空间
#include<stdio.h>
#include<stdlib.h>
void fun1(int x,int y)//创建临时变量法
{
int z;
z = x;
x = y;
y = z;
printf("创建临时变量交换后a=%d,b=%d\n", x, y);
}
void fun2(int x, int y)//加减法
{
x = x + y;
y = x - y;
x = x - y;
printf("利用加减法交换后a=%d,b=%d\n", x, y);
}
void fun3(int x, int y)//异或法
{
x = x ^ y;
y = x ^ y;
x = x ^ y;
printf("利用异或运算后a=%d,b=%d\n", x, y);
}
void main()
{
int a = 10;
int b = 20;
printf("未交换之前a=%d,b=%d\n", a, b);
fun1(a,b);
fun2(a,b);
fun3(a,b);
system("pause");
}