簡體   English   中英

數組中最大的元素輸出為 -858993460 [C++]

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM