📜  C++示例 交换了两个数(不借助其他变量)(1)

📅  最后修改于: 2023-12-03 15:14:04.505000             🧑  作者: Mango

C++示例:交换了两个数(不借助其他变量)

在编程中,经常需要交换两个数的值,而不需要借助于其他的变量来实现。在C++中,可以通过以下几种方法来实现:

方法一:使用加法和减法
void swap(int &a, int &b) {
    a = a + b;
    b = a - b;
    a = a - b;
}

该方法通过加法和减法运算来实现两个数的值的交换。首先将两个数相加,然后将值赋给其中一个数,并用这个数的值减去另一个数,再将差值赋值给另一个数,最后用这个数的原始值减去差值,就完成了两个数的值的交换。

方法二:使用异或运算
void swap(int &a, int &b) {
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
}

该方法通过异或运算来实现两个数的值的交换。异或运算的特点是:两个相同的数异或得0,任何数与0异或得其本身。因此,将两个数分别进行异或运算,再将得到的值分别赋给另一个数,最终完成两个数的值的交换。

方法三:使用STL

在C++的STL中,有一个函数swap可以用来交换两个变量的值。其函数的定义如下:

template <class T> void swap (T& a, T& b);

使用该函数可以更方便地实现两个数的值的交换,示例代码如下:

void swap(int &a, int &b) {
    std::swap(a, b);
}

以上就是三种不借助其他变量实现交换两个数的方法,他们均使用引用的方式传参,使得交换后的值能够正确地返回。我们可以根据需要和喜好来选择不同的方法。