簡體   English   中英

為什么在 C++ 上循環數組時出現奇怪的字符

[英]Why I get strange characters when looping an array on C++

這是我的主要 function:

string a[18] = {
    "1", " " ,"2", " ", "3", "\n",
    "4", " " ,"5", " ", "6", "\n",
    "7", " " ,"8", " ", "9", "\n" };

for (int x = 0; x <= 18; x++)
{ 
    cout << a[x];
}

output 是這樣的:

1 2 3
4 5 6
7 8 9
\�V�W(SV��8\�V������

我是否錯誤地循環我的數組?

PS:我在mac

如果您有一個包含18元素的數組,則唯一有效的索引是0.. 17

您需要將循環更改為:

for (int x = 0; x < 18; ++xx)
{ 
    cout << a[x];
}

否則,如果您嘗試索引a[18] ,則會在循環的最后一次迭代中調用未定義的行為。

它正在打印a[18] ,它超出了數組a的邊界。

您需要使用x < 18 ,而不是x <= 18

您的循環超出了數組的范圍。

一種更安全的迭代數組的方法是使用基於范圍的for循環

string a[18] = {
    "1", " " ,"2", " ", "3", "\n",
    "4", " " ,"5", " ", "6", "\n",
    "7", " " ,"8", " ", "9", "\n"
};

for (auto &s : a)
{
    cout << s;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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