交换x和y的值

时间:2017-08-15 07:57:02

标签: c++

如何在此代码中更改x和y的值?

当我尝试x=y, y=x;时,它会将其更改为相同的数字。

我该怎么做?

如何为(x y z)等3个值执行此操作?

#include <iostream>
using namespace std;
int main()
{
    int x=4;
    int y=6;
    cout<<x<<y;
    return 0;
}

之前我尝试过这段代码,但它没有按照我想要的方式运行。

#include <iostream>
using namespace std;
int main()
{
    int x=4;
    int y=6;
    x=y,y=x;
    cout<<x<<y;
    return 0;
}

7 个答案:

答案 0 :(得分:2)

这是因为您首先设置x的值,然后将该值复制到y。有一个名为std::swap的标准库函数,可以完成这项工作。

你可以看到它的一个例子here

std::swap在C ++ 11之前的标头<algorithm>和C ++ 11之后的<utility>中定义。因此,请确保#include正确的标题。

在C ++ 11中使用std::swap而不是将第三个临时变量复制到其中的好处是,std::swap使用std::move从而不会产生额外的副本。

对于三个数字,您必须按照以下方式自行实现:

#include <iostream>

int main() {
    int x{5}, y{3}, z{2};

    int temp{std::move(x)};
    x = std::move(y);
    y = std::move(z);
    z = std::move(temp);

    std::cout << x << ' ' << y << ' ' << z << '\n';

    return 0;

}

Ideone

答案 1 :(得分:2)

对于2个变量,您应该使用std::swap,对于更多变量,您可以使用std::tuple

std::tie(x, y, z) = std::make_tuple(y, z, x);

Demo

答案 2 :(得分:1)

有两种选择:

  1. 介绍临时变量:

    int temporary = y; y = x; x =临时;

  2. 或者像std::swap(x, y);一样使用std :: swap(您可能需要导入<algorithm><utility>

  3. 现在为什么会收到此错误?让我们一步一步地分析你在做什么:

    1. x = y;给出y的x值。所以现在x等于y
    2. y = x;给出x的y值。但等等,x现在等于y。所以什么都没有改变。
    3. 如果你仍然无法理解你做错了什么,我建议你拿一张纸并按照你自己的代码逐步写下每一步的文章写作程序。

      最后一件事是对未来的建议。请让您的问题清晰,格式正确。例如,它完全不了解你的观点有3个值。请解释你的意思,并提供一些例子,然后也许有人能够帮助你。

答案 3 :(得分:0)

试试这个:

#include <iostream>
using namespace std;
int main()
{
    int x=4;
    int y=6;

    int temp=x;
    x=y;
    y=temp;
    cout<<x<<y;
    return 0;
}

答案 4 :(得分:0)

x=4
y=6

x=y // x=6, y=6

y=x // does nothing

尝试使用其他变量:

#include <iostream>
using namespace std;
int main()
{
    int x=4;
    int y=6;
    int temp=x;
    x=y,y=temp;
    cout<<x<<y;
    return 0;
}

答案 5 :(得分:0)

如果不使用第三个变量,您可以交换两个这样的变量,

#include <iostream>
using namespace std;
int main()
{
    int x=4;
    int y=6;

    x = x + y;
    y = x - y;
    x = x - y;
    cout<<"X = "<<x << "\n"
        <<"Y = "<<y;
    return 0;
}

所以输出将是,

  

X = 6

     

Y = 4

答案 6 :(得分:0)

以下是交换2个变量(1行)的代码

df.list

以下是交换3个变量(1行)的代码

#include <iostream>
using namespace std;
int main()
{
    int x = 4;
    int y = 6;
    cout << x<< y;
    swap(x,y);
    cout << x << y;
    getchar();
    return 0;
}