0
我正在寫一個函數,用用戶輸入填充三個數組並計算它們的平均值。但我得到一個奇怪的錯誤。奇怪的錯誤 - 打印出數組的內容會改變結果,即使我從未改變結果
這太奇怪了。當我註釋掉的代碼:
for (int i = 0; i < 5; i++)
cout << Steve[i] << ",";
cout << endl;
#include <iostream>
using namespace std;
void fill_up(int a[], int size);
void fill_up(int a[], int size)
{
cout << "Enter " << size << " numbers:\n";
for (int i = 0; i < size; i++)
cin >> a[i];
size--;
cout << "The last array index used is " << size << endl;
}
int main()
{
int Steve[5];
int George[5];
int Mary[5];
cout << "~ Fill up the Steve array ~" << endl;
fill_up(Steve, 5);
cout << "~ Fill up the George array ~" << endl;
fill_up(George, 5);
cout << "~ Fill up the Mary array ~" << endl;
fill_up(Mary, 5);
/*
for (int i = 0; i < 5; i++)
cout << Steve[i] << ",";
cout << endl;
*/
int SteveSum, GeorgeSum, MarySum = 0;
double SteveAvg, GeorgeAvg, MaryAvg;
for(int i = 0; i < 5; i++)
{
SteveSum += Steve[i];
GeorgeSum += George[i];
MarySum += Mary[i];
}
SteveAvg = ((double) SteveSum)/5;
GeorgeAvg = ((double) GeorgeSum)/5;
MaryAvg = ((double) MarySum)/5;
cout << "Steve's average is " << SteveAvg << endl;
cout << "George's average is " << GeorgeAvg << endl;
cout << "Mary's average is " << MaryAvg << endl;
}
這裏是命令行中運行代碼的兩張截圖。
正如你可以看到,當我註釋掉打印陣列片斷,史蒂夫的平均出來,以一個奇怪的大量,但是當我取消註釋代碼片段,它工作正常。這是怎麼回事?
這就是爲什麼在同一行聲明多個變量是一個壞主意;) – Borgleader 2014-12-13 17:40:52
@deviantfan當然他們做,還有什麼是你實際上期待?問題是,如果問題在話題上。 – 2014-12-13 17:44:15
對不起,刪除它(「看到最簡單的問題得到msot upvotes總是很有趣)」。我並沒有真正期待別的,但那並不能使整個事情變得更好。 – deviantfan 2014-12-13 17:48:00