void swap(int& a, int& b)
{
a=a^b;
b=a^b;
a=a^b;
}
为什么有时候当a == b,交换后两个都变成0了,比如a =6,b=6,经过函数处理后,都变成0了,单独测试是OK的,用在程序里就这样了
关于两数异或交换的问题~~
答案:1 悬赏:10
解决时间 2021-04-09 13:37
- 提问者网友:清茶柒夏
- 2021-04-08 21:43
最佳答案
- 二级知识专家网友:飘零作归宿
- 2021-04-08 22:37
不可能的,你仔细看过了?
#include <iostream>
using namespace std;
void swap(int& a, int& b)
{
a=a^b;
b=a^b;
a=a^b;
}
void exchange(int &a, int &b)
{
a = a + b;
b = a - b;
a = a - b;
}
int main()
{
int a = 0, b = 0;
cout << "Input a and b:"<<endl;
cin >> a >> b;
swap(a, b);
cout << "SWQPED: a = " << a << ", b = " << b << endl;
cout << "Input a and b:"<<endl;
cin >> a >> b;
exchange(a, b);
cout << "EXCHANGED: a = " << a << ", b = " << b << endl;
return 0;
}
Outcome:
Input a and b:
3 3
SWQPED: a = 3, b = 3
Input a and b:
4 4
EXCHANGED: a = 4, b = 4
#include <iostream>
using namespace std;
void swap(int& a, int& b)
{
a=a^b;
b=a^b;
a=a^b;
}
void exchange(int &a, int &b)
{
a = a + b;
b = a - b;
a = a - b;
}
int main()
{
int a = 0, b = 0;
cout << "Input a and b:"<<endl;
cin >> a >> b;
swap(a, b);
cout << "SWQPED: a = " << a << ", b = " << b << endl;
cout << "Input a and b:"<<endl;
cin >> a >> b;
exchange(a, b);
cout << "EXCHANGED: a = " << a << ", b = " << b << endl;
return 0;
}
Outcome:
Input a and b:
3 3
SWQPED: a = 3, b = 3
Input a and b:
4 4
EXCHANGED: a = 4, b = 4
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯