【问题标题】:Why does foreach in C++ can't traverse the first element?为什么C++中的foreach不能遍历第一个元素?
【发布时间】:2019-10-21 03:14:53
【问题描述】:

foreach 循环中,似乎第一个元素没有被遍历,而第6 个元素num[5] 被遍历,这是未定义的。

#include<iostream>
using namespace std;
int num[5];
int main() {
    for (int i = 0; i < 5; i++) num[i] = i + 1;
    for (auto i : num) cout << num[i] << " ";
    return 0;
}

预期输出:1,2,3,4,5

输出:2,3,4,5,0

【问题讨论】:

  • 应该是cout&lt;&lt;i&lt;&lt;" "

标签: c++ foreach


【解决方案1】:

因为i不是索引,而是值,所以应该替换:

for (auto i:num)cout<<num[i]<<" ";

for (auto i:num)cout<< i <<" ";

然后你得到正确的输出1 2 3 4 5

【讨论】:

    【解决方案2】:

    for (int i=0;i&lt;5;i++)num[i]=i+1;

    加载num 变量,如[0] = 1[1] = 2 ... [4] = 5

    for (auto i:num)cout&lt;&lt;num[i]&lt;&lt;" ";

    这实际上是通过num 中的值,而不是索引,所以你在这里打印的是num[1]num[2] ... num[5](顺便说一下,num[5] 是未定义的行为)

    【讨论】:

      猜你喜欢
      • 2019-01-05
      • 1970-01-01
      • 2019-10-18
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多