我目前正在学习编程和学习C ++。我尝试使用for each循环打印出一个数组,但我得到了一些奇怪的输出。这是我的代码。
#include<iostream>
using namespace std;
int main(){
int length;
cin >> length;
cout << "Enter " << length << " numbers!\n";
int x[length];
for (int i : x){
cin >> i;
}
for (int i : x){
cout << i << endl;
}
return 0;
}
我进行了测试,这是我的输入和输出
5
Enter 5 numbers!
1
2
3
4
5
78344035
1
2031166200
32767
1528080880
如果有人能告诉我我做错了什么,我真的很感激。感谢
答案 0 :(得分:2)
您的第一个循环会将x
的每个元素复制到i
,并且您每次都会流式传输到该副本i
:
for (int i : x){ cin >> i; }
要流入数组,请按引用获取每个元素:
for (int& i : x){
cin >> i;
}
请参阅this answer
同样,您正在使用不是标准C ++的VLA