我想将1到100之间的偶数存进数组,然后再通过数组将这些偶数输出,但是不知为什么运行结果发生了溢出,可否帮我看看原因?
代码:
#include
using namespace std;
int main()
{
int oushues[50];
int cnt=0;
for(int i=1;i<=100;i++)
{
if(i%2==0)
{
oushues[cnt++]=i;
cout<<oushues[cnt]<<endl;
}
}
return 0;
}
问题出在了 oushues[cnt++]=i;,给数组一个元素赋值后,数组下标增1,而后面的输出就是下一个数组元素了,还没有赋值,当然舍溢出了,解决方法就不用说了吧。
当 i 的值为 50 的时候,索引会超出数组的范围,oushues[50] 的索引值是 0-49
我说错了,是当 i 为 100 的时候。
oushues[cnt++]=i; ------------------------- cnt 为 49
cout<<oushues[cnt]<<endl; ------------- cnt 为 50 (越界)
#include
#include
using std::vector;
using std::cout;
using std::flush;
int main(int argc, const char * argv[]) {
//container
std::__1::vector int_vec;
for(int i = 1;i < 101;++i){
//even
if(i % 2 == 0){
int_vec.push_back(i);
}
}
for(std::__1::vector<int>::const_iterator it = int_vec.begin();it != int_vec.end();++it){
cout << *it << " " << flush;
}
return 0;
}
这样写,你就溢不出了
cout<<oushues[cnt]<<endl; 输出了oushues[50];
因为这里有问题oushues[cnt++]=i;
问题出在了 oushues[cnt++]=i;,给数组一个元素赋值后,数组下标增1,而后面的输出就是下一个数组元素了,还没有赋值,当然舍溢出了,解决方法就不用说了吧。