如果想交换两个变量,一般引入第三个变量
例如,
时间=a;
a=b;
b=temp;
这将交换两个变量的值。 那么,可以不引入其他变量就实现变量值的交换吗? 答案是肯定的。
可以用异或实现的有两种实现方法,本质上是相同的。
法1 :
#包含
int main () )
{
int a,b;
while(1)。
{
扫描(' % d % d )、a、b );
a=a^b; //(1) )。
b=a^b; //(2) )。
a=a^b; //(3) )。
printf(%d%d(n ),a,b );
}
返回0;
}
法2 :
#包含
int main () )
{
int a,b;
while(1)。
{
扫描(' % d % d )、a、b );
b=a^b; //(1) )。
a=a^b; //(2) )。
b=a^b; //(3) )。
printf(%d%d(n ),a,b );
}
返回0;
}
两种方法本质上是一样的,让我们来证明一下方法吧。
异或操作满足耦合律和交换律,根据异或操作的性质,任意整数a^a=0;
()步骤)2)的a ) a=a^b=)将步骤(1)的b代入b ) a^ ) a^b )=b;
(步骤(3)中的b ) b=a^b=)将步骤(1)中的b设置为b,将步骤(2)中的a设置为a ) a^b^a^b=a^a^a^b^b ) b=a;
完工证