试图在向量中推送随机生成的数字时发生溢出

  • 本文关键字:数字 溢出 随机 向量 c++
  • 更新时间 :
  • 英文 :


我的代码如下所示:

#include <iostream>
#include <vector>
#include <string>
#include <stdlib.h>
using std::string;
using std::endl;
using std::cout;
using std::cin;
struct funcs
{
std::vector<int> values;
int sum;
void createVectorValues(){
while(values.size() < 100)
{
int x = rand() % 100;
values.push_back(x);
}
for(int& a : values)
{
sum += 1;
}
cout << sum;
}
};
int main()
{
srand;
funcs myFunct;
myFunct.createVectorValues();

}

以下代码会产生一个较大的值,例如-858993360

我如何更改此代码,使其能够正常运行

  1. 您没有为funcs定义构造函数,所以您得到了默认构造函数,它调用每个成员的默认构造函数。这意味着CCD_ 2成员CCD_。请参阅默认构造函数是否初始化内置类型?。您可能想要编写一个构造函数,将sum初始化为0

  2. srand;不是函数调用。这是有效的语法,因为srand的计算结果是指向srand函数的指针,但它是一个没有副作用的表达式,所以它什么也不做。就像你写了3;一样。要调用该函数,需要srand(arg),其中arg是一个适当的整数。或者,切换到C++11随机数生成功能,它更强大,通常具有更好的随机性。

试试这个:

int main(int, char **) {
funcs myFunct;
myFunct.createVectorValues();
}

尽管不知道为什么你的防病毒软件参与其中。这可能是一个单独的问题。

最新更新