簡體   English   中英

為什么C++中的foreach不能遍歷第一個元素?

[英]Why does foreach in C++ can't traverse the first element?

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;
}

預計 output:1,2,3,4,5

output:2,3,4,5,0

因為i不是索引,而是值,所以您應該替換:

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

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

然后你得到正確的 output 1 2 3 4 5

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

加載num變量,如[0] = 1 , [1] = 2 ... [4] = 5

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

這實際上是通過num中的值,而不是索引,所以你在這里打印的是num[1]num[2] ... num[5] (順便說一下, num[5]是未定義的行為)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM