错误代码
const int MONTH = 12;
const int YEAR = 2;
int main()
{
const char* months[MONTH] =
{
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
};
int maxsales[MONTH][YEAR];
int yearsum[YEAR];
int sum = 0;
for (int i = 0; i < YEAR; ++i)
{
for (int j = 0; j < MONTH; ++j)
{
cout << "第" << i + 1 << "年:"
<< months[j] << " sales: ";
cin >> maxsales[j][i];
yearsum[i] += maxsales[j][i];
}
cout << "The sales at " << i+1 << " year: " << yearsum[i] << endl;
sum += yearsum[i];
}
cout << "---------------------------" << endl;
cout << "The sales in " << YEAR << " year: " << sum << endl;
system ("pause");
return 0;
}
目标数组 yearsum[YEAR]
没能正确计数并输出结果,
输出结果:
原因:
for (int j = 0; j < MONTH; ++j)
{
cout << "第" << i + 1 << "年:"
<< months[j] << " sales: ";
cin >> maxsales[j][i];
yearsum[i] += maxsales[j][i];
}
for循环中的表达式yearsum[i] += maxsales[j][i];
,使用了未初始化的局部变量(数组)yearsum[YEAR]
。
yearsum[i]
在内存空间中的值未知,恰好此时yearsum[0] = -858993460;
+14后变成如图所示输出的值
改正:
int maxsales[MONTH][YEAR] = { 0 };
int yearsum[YEAR]{};
总结:
- 循环中使用的局部变量(数组)必须初始化
- 怎样(How)初始化数组
arr[3] = { 0 };
arr[3]{};
- 什么是(What)局部变量
粗浅理解成,花括号内定义的常规变量,一般都是局部变量,作用域(生命周期)有且只在该花括号内。
局部变量可以是相对的,当在一个花括号(循环)中,使用另一个花括号(main函数)中的局部变量,该局部变量必须初始化。