C ++输出找出问题

c++ output figuring out problems

#include <iostream>
using namespace std;

void f(int& p)
{
    p += 2;
}

int main()
{
    int x = 10;
    f(x);
    int y = x + 1;
    f(y);
    cout << "x is " << x << endl;
    cout << "y is " << y << endl;
    system("PAUSE");
    return 0;
}

现在答案是x是12,y是15。

我有点理解 x 可能是 12。要解释我是否正确,因为

void f (int &p)
{
    p += 2;
}

int x = 10 所以你 10 += 2 是 12 所以 x 是 12.

但是我不太明白为什么y是15。

是否因为我使用 12 作为 x 用于 int y = x + 1 所以它是 12 + 1 即 13 然后 13 += 2 即 15?

Is it because I use 12 as x for int y = x + 1 so it's 12 + 1 which is 13 and then 13 += 2 which is 15?

是的。 f 是一个函数,它通过引用 获取整数值 并将其递增 2。函数调用后,整数将永久改变。

int x = 10;
// `x` is 10.

f(x);
// `x` is now 12.

int y = x + 1;
// `y` is 13.

f(y);
// `y` is now 15.

值在 f() 内更改,因为它们是 通过引用 发送的 - void f(int& p).

所以:

int x = 10;
f(x);  // x is 12 after the call
int y = x + 1; // y = 13
f(y);  // y = (12+1) + 2 = 15 after the call

更新问题:

Is it because I use 12 as x for int y = x + 1 so it's 12 + 1 which is 13 and then 13 += 2 which is 15?

是的,见上文。