C ++为什么我得到这个输出。 (Greenhorn在这里)

时间:2017-09-12 23:01:42

标签: c++ increment ampersand

所以在下面的代码中,我一直在试图弄清楚为什么代码输出会出现......

X = 2且Y = 2

当我原本以为它会是x = 1而y = 1.我仍然对C ++进入学期感到困惑,并且对我有更多知识的人的一点解释可能有希望这个概念进入了我的脑海。

int main()
{

    int x = 0;

    int& y = x;

    y++;

    x++;

    std::cout << "x = " << x << " y = " << y << std::endl;
}

2 个答案:

答案 0 :(得分:1)

x和y彼此没有区别。引用意味着x的另一个名称是y。因此,当你调用y时,它会调用x,这意味着如果增加y则增加x。然后再次增加x,x变为2.并且因为y代表x,当你调用y时它调用x而你再次看到2。

答案 1 :(得分:0)

关键点是参考标记的含义:

int& y = x;
  1. 它表示您正在为'x'分配别名,因此'y'实际上与'x'(物理)共享相同的内存地址。
  2. 操作

    y++;
    

    将更改该内存地址中的值,该地址由'x'和&amp;&amp; 'Y'。与操作相同

    x++;
    

    结果,你在同一个内存地址上做了2次递增,初始值为'0',值变为'2'。

    1. 同样的想法,因为'x'和'y'都指向完全相同的内存地址,打印'x'和'y'将给你相同的值。