[英]the largest element in the array outputs as -858993460 [C++]
我試圖讓用戶為每個人輸入一個數字。 然后控制台輸出數組中的最大值。 一切正常,但最大值始終輸出為 -858993460。 我嘗試了多種組合,但我似乎無法弄清楚
我是 arrays 的新手,因此我們將不勝感激任何幫助以及有關如何改進我的代碼的反饋
#include <iostream>
int main()
{
int people[10];
int max = people[0];
std::cout << "please enter number of pancakes eaten by each person.\n";
//lets the user input values for each element
for (int i = 0; i < 10; ++i) {
std::cin >> people[i];
}
//outputs all the elements of the array
for (int i = 0; i < 10; ++i) {
std::cout << people[i] << " ";
}
//finds the largest element in the array
for (int i = 0; i > 10; ++i) {
if (people[i] > max) {
max = people[i];
}
}
std::cout << "\nmax: " << max;
return 0;
}
我也不斷收到警告說:for-loop 定義不正確。 循環體未執行。 我嘗試查找此警告,但警告似乎非常廣泛,我找不到任何有用的信息
int people[10];
這聲明了一個包含十個int
值的數組。 沒有任何值被顯式初始化。 這就是在自動 scope 中聲明的普通值在 C++ 中的工作方式,它們沒有被初始化為任何值。 代碼負責初始化它們。
int max = people[0];
這會將max
的值設置為數組的第一個值。 尚未初始化為任何值。 這是未定義的行為。 從這一點開始,程序的行為是未定義的。
此外,即使people
的價值觀被初始化,這仍然會被打破。 程序的意圖很明確:將值讀入people
數組,然后找到它們的最大值。
然而,此時,還沒有從任何地方讀取任何內容。
這里嘗試的目標是將max
最初設置為數組中的第一個值,即第一個讀取值。
但為了使其有意義,應該在從輸入讀取數組中的值之后設置max
,而不是之前。 這應該在讀入所有值之后而不是之前完成。
在int max = people[0]
行中,您正在取消引用數組的第一個元素。 但是取消引用什么? 此時在程序中您還沒有初始化 people 數組中的 10 個元素中的任何一個。 因此,在程序的那個點獲取 people[0] 的值並將其復制到另一個 int 以供以后比較是未定義的行為。 最佳解決方案是在用戶輸入后簡單地將int max = people[0]
移動到,並且比較循環從 i = 1 開始,因為 max 已經等於第一個輸入值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.