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