C ++考试修订版,不确定为什么正确答案是什么

时间:2016-01-10 00:38:20

标签: c++

以下是我们被问到的问题以及我们从中推断出的代码。在我的同龄人之间交谈,我们似乎无法找到原因,任何见解都会很棒。

为什么答案“min是6且max是5”?

#include <iostream>
using namespace std;

void minMax(double a, double b, double &min, double &max)
{
    if (a<b)
    {
        double min = a;
        double max = b;
    }
    else 
    {
        double min = b;
        double max = a;
    }
}

int main()
{
    double a = 5, b = 6, min = 6, max = 5;
    minMax(a, b, min, max);
    cout << " min is " << min << " and max is " << max;
    system("PAUSE");
    return 0;
}

1 个答案:

答案 0 :(得分:3)

您正在使用局部变量定义来遮蔽参数,以便在您的课程日志中修改100次(并告诉您的同行当然):

void minMax(double a, double b, double &min, double &max)
{
    if (a<b)
    {
        /* double here defines a variable in local scope
           that shadows the reference parameter. */
        min = a;
        max = b;
    }
    else 
    {
        min = b;
        max = a;
    }
}