自行编写程序,测试异或运算实现两个数字的交换 用c++来写
时间: 2024-09-27 13:14:18 浏览: 35
在C++中,你可以使用异或(XOR)运算来实现两个整数的无损交换,因为XOR运算的性质是相同的元素相加结果为0。以下是一个简单的示例:
```cpp
#include <iostream>
// 函数模板用于任意类型的变量
template<typename T>
void swapWithoutTemp(T& a, T& b) {
if (&a == &b) // 防止a和b指向同一地址
return;
a = a ^ b; // 第一步:a现在保存了a和b的异或值
b = a ^ b; // 第二步:b现在保存了原始的a值,因为a已经变成了它们的异或值
a = a ^ b; // 第三步:a现在恢复到原始的b值,因为a和b的异或值就是原始的b
}
int main() {
int num1 = 5, num2 = 10;
std::cout << "Before swapping: num1 = " << num1 << ", num2 = " << num2 << "\n";
swapWithoutTemp(num1, num2);
std::cout << "After swapping: num1 = " << num1 << ", num2 = " << num2 << "\n";
return 0;
}
```
在这个例子中,`swapWithoutTemp`函数接收两个引用作为参数,然后通过三个步骤实现了数的交换。运行这段代码后,你将看到num1和num2的值互换。
阅读全文