数值交换
实例十四:数值交换
显然,实现数值交换的方法有很多,在此列举三种进行对比:
方法一:利用第三变量进行交换
定义:a,b,temp
{
temp=a
b=a
b=temp
}
方法二:不利用第三变量
a,b
{
a=a+b
b=a-b
a=a-b
}
方法三:利用位操作符,逻辑与方法二类似
a,b
{
a=a^b
b=a^b 等价于 b=(a^b)^b
a=a^b 等价于 a=(a^b)^(a^b)
}
或
{
a ^= b;
b ^= a;
a ^= b;
}
方法一和方法二 用数字代入就可以明白了,故不加以解释。
方法三解释:
为了看得清晰,使用三个变量
a=3,b=4,c
a 0000 0011 --3
b 0000 0100 --4
c=a^b 0000 0111 --7
b=c^b 0000 0011 --3
a=c^b 0000 0100 --4
代码:
int _tmain(int argc, _TCHAR* argv[])
{
int a, b;
cout << "请输入要进行交换的两个数值:";
cin >> a >> b;
a ^= b;
b ^= a;
a ^= b;
cout << endl << "结果为:";
cout << a << " " << b;
system("pause");
return 0;
};