以下是我们被问到的问题以及我们从中推断出的代码。在我的同龄人之间交谈,我们似乎无法找到原因,任何见解都会很棒。
为什么答案“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;
}
答案 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;
}
}