首页 > 解决方案 > IN、OUT、INOUT 参数

问题描述

请解释程序的执行,以说明为什么它会产生这样的特定输出。

输出是

6 10 20
6 10 8
2 2 14

我的猜测必须是由于 IN、OUT、INOUT 参数,但我并不真正理解它

#include <iostream>

using namespace std;

void sunny(int&, int);
void cloudy(int, int&);

int temp;

int main()
{
    int num1 = 6;
    int num2 = 10;
    temp = 20;

    cout << num1 << " " << num2 << " " << temp << endl;

    sunny(num1, num2);
    cout << num1 << " " << num2 << " " << temp << endl;

    cloudy(num1, num2);
    cout << num1 << " " << num2 << " " << temp << endl;
}

void sunny(int& a, int b)
{
    int w;
    temp = (a + b) / 2;
    w = a / temp;
    b = a + w;
    a = temp - b;
}

void cloudy(int u, int& v)
{
    temp = 2 * u + v;
    v = u;
    u = v - temp;
}

标签: c++

解决方案


实际上输出是:

6 10 20
2 10 8
2 2 14

我们可以看到这样的步骤:

阳光电话:

temp = (6 + 10)/2 = 8
w = 6/8 = 0 //This is because w is declared int, and int(6/8) = 0
b = 6 + 0 = 10
a = 8 - 6 = 2

因此 num1 现在是 2,因为引用参数,而 temp 更改为 8,因为它的全局

多云通话:

temp = 2 * 2 + 10 = 14
v = 2
u = 2 - 14 = -12 //This variable is doing nothing

因此 num2 现在是 2 出于与以前相同的原因,而 temp 是 14


推荐阅读