一、 使两个变量之间的数值进行交换的三种方法:
1.方法一:通过借助第三变量来进行交换:
void exchange1(int a,int b)
{
int temp=0;
printf("方法一:\n");
printf("数值a,b交换前:a=%d,b=%d\n",a,b);
temp=a;//temp=10
a=b; //a=20
b=temp;//b=temp=10
printf("数值a,b交换后:a=%d,b=%d\n",a,b);
printf("\n");
}
2.方法二:通过“加减法”(可能会溢出)来进行交换:
void exchange2(int a,int b)
{
printf("方法二:\n");
printf("数值a,b交换前:a=%d,b=%d\n",a,b);
a=a+b;//a=a+b=10+20=30
b=a-b;//b=a-b=30-20=10;
a=a-b;//a=a-b=30-20=20
printf("数值a,b交换后:a=%d,b=%d\n",a,b);
printf("\n");
}
3.方法三:通过“异或的方法”来进行交换:
注意:
3.1异或数学符号
异或,英文为exclusive OR,缩写成xor[1]异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),
中文名 异或
外文名 exclusive OR
数学符号 ⊕
英文简称 xor
程序符号 ^
a=10; //十进制的数值10,转换为二进制的(0000 1010)
b=20; //十进制的数值20,转换为二进制的 (0001 0100)
3.2常用进制
3.2.1 二进制、十进制、以及它们的区别和特点。
(1)二进制,逢二进一,数字中只有 0 和 1。例如,数数,二进制的数法是:0,1 接着 10, 11 接着 100,101,110,111 接着 1000,1001 ... 1111 以此类推。后缀用 B 来表示。
(2)十进制,逢十进一,数字中含有 0,1,2,3,4,5,6,7,8,9。后缀用 D 来表示。
void exchange3(int a,int b)
{
printf("方法三:\n");
printf("数值a,b交换前:a=%d,b=%d\n",a,b);
a=a^b;//a=(0000 1010)^(0001 0100)=(0001 1110)
b=a^b;//b=(0001 1110)^(0001 0100)=(0000 1010)B=(10)D
a=a^b;//a=(0001 1110)^(0000 1010)=(0001 0100)B=(20)D
printf("数值a,b交换后:a=%d,b=%d\n",a,b);
printf("\n");
}
二、总结:
4.以上所述的三种方法,均可以实现两个变量之间的数值交换,但在我们日常写代码当中,建议大家使用方法一来进行两变量之间的数值交换。