2

我正在我的 C++ 面向对象 1 类中学习向量,我们已经引入了基于范围的 for 循环的概念。我决定单独练习基于范围的 for 循环,以便习惯语法,但我遇到了一个奇怪的问题。

 #include<iostream>
 using namespace std;
 int main()
 {
   int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
   for ( auto i: a)
     {
       cout << a[i] << " ";
     }

 return 0;
 } 

当我运行上面的代码时,我的输出如下。

2 3 4 5 6 7 8 9 0 1 按任意键继续...

我的输出应该是

1 2 3 4 5 6 7 8 9 0 按任意键继续...

谁能告诉我为什么我的第一个索引被跳过?我有视觉工作室 2013 专业版。

4

1 回答 1

10

您会得到奇怪的输出,因为i在范围循环中是来自数组的值,而不是索引。那是,

for (auto i : a)

循环遍历的a在您的代码中,您有效地打印了 sequence a[a[0]],a[a[1]]等。

您可能想要的代码是

for (auto i : a) {
    std::cout << i << std::endl;
}
于 2016-04-01T14:53:12.270 回答