问题描述
- 用c++做一个数组练习时遇到一个问题
- 我想将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;
解决方案七:
cout<<oushues[cnt]<<endl; 输出了oushues[50];
因为这里有问题oushues[cnt++]=i;
解决方案八:
问题出在了 oushues[cnt++]=i;,给数组一个元素赋值后,数组下标增1,而后面的输出就是下一个数组元素了,还没有赋值,当然舍溢出了,解决方法就不用说了吧。
时间: 2024-11-17 04:50:32