c++ - 基于范围的 for 循环使用 cout 错误地输出数组元素

标签 c++ arrays

以下代码为前两个 for 语句正确输出数组元素,但在第三个 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

最佳答案

您有越界访问

for (int i : myArray) {
    cout << myArray[i] << endl;
}

作为 i 将是 10,20,30,40,50。

你想要

for (int i : myArray) {
    cout << i << endl;
}

就像您使用 printf 一样。

关于c++ - 基于范围的 for 循环使用 cout 错误地输出数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30539331/

相关文章:

c# - 如何循环比较两个文本文件中的数百万个值?

javascript - 如何添加到此 javascript 图像旋转器的链接?

c++ - 写入和读取十六进制trame qt串口

c++ - 消除左递归后的精神语义 Action

c++ - 在 'SDL_PollEvent'中测试 'while'的正确方法

C# 查找最高数组值和索引

java - java查找两个整数数组中的共同元素

C : shmget with a 2D array

c++ - 读取文件而不是将其作为参数传递

c++ - 将 3 个字节/引脚值合并为一个字节