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