c ++输出找出问题

时间:2016-01-10 23:35:02

标签: c++ output iostream

#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。

是因为我使用x作为int y = x + 1,因此12 + 1为13,然后13 += 2为15?

2 个答案:

答案 0 :(得分:0)

  

是因为我使用x作为int y = x + 1,因此12 + 1为13,然后13 += 2为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.

答案 1 :(得分:0)

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

更新了问题:

  

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

是的,见上文。