以下代码正确地输出前两个for语句的数组元素,但是在第三个中,它在使用cout时使用基于for循环的范围错误地输出数组的元素(在第一个中使用printf)。这是为什么?
#include <iostream>
using namespace std;
int main( int argc, char ** argv )
{
int myArray[]={10,20,30,40,50};
for (int i : myArray) {
printf("%d\n", i);
}
for (int i = 0 ; i < 5; i++) {
cout << myArray[i] << endl;
}
for (int i : myArray) {
cout << myArray[i] << endl;
}
return 0;
}
输出:
10
20
30
40
50
10
20
30
40
50
-1707465271
0
1606417258
1606417820
1606418039
答案 0 :(得分:4)
您在
中有超出限制的访问权限for (int i : myArray) {
cout << myArray[i] << endl;
}
i
为10,20,30,40,50。
你想要
for (int i : myArray) {
cout << i << endl;
}
与printf
一样。
答案 1 :(得分:1)
按以下方式更改
for (int i : myArray) {
cout << i << endl;
}
与使用printf
之前编写的循环相同for (int i : myArray) {
printf("%d\n", i);
}
考虑到您应该包含标题<cstdio>
答案 2 :(得分:0)
在使用基于范围的for循环时,您不需要使用索引变量,而是需要一个局部变量来从需要循环的容器或数组中检索数据
for (int i : myArray) {
cout << myArray[i] << endl;
}
上面的代码片段应该如下更正:
for (int i : myArray) {
cout << i << endl;
}