rand()创造了一个奇怪的结果

时间:2017-12-15 18:48:36

标签: c++ arrays netbeans

在编写我的高中课程作业时,我使用了rand()并意识到它正在创建一个静态结果。我的代码只是为数组创建9个随机数,然后将它们相加。

#include <string>
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;

int main() {
  srand( time( NULL ) );
  int array[]={0};
  int i = 0;
  while (i<9){
      array[i]={rand()};
      i++;
  }
  int loop=0;
  int sum=0, num=0;
  while (num<9){
  cout<<"Value "<<num<<": "<<array[num]<<"\n";
  sum=sum+array[num];
  num++;
  }

  cout<<"Sum of all values: "<<sum<<"\n";

    return 0;
}

使用此代码,某些值似乎相同,其他值与最后一个值相似 Image1 Image2 Image3如果你看值0和3,它们总是有4位数,值1总是0,就像值2总是2一样。其余的似乎是随机的。对于为什么会发生这种情况的任何想法?

2 个答案:

答案 0 :(得分:2)

您正在进行未定义行为,因为您正在访问其范围之外的数组。

声明它的大小为9以避免这种情况:

.services-icon img {
    max-width: 100%;
    display: block;
    width: 200px;
    margin-top: 0;
    margin-right: auto;
    margin-bottom: 0;
    margin-left: auto;

答案 1 :(得分:0)

你的第一个问题是当你定义 int 数组时,你将它定义为1个元素,其值为0.所以在你的while循环中,你已经从内存中读取了-bounds;那些脏地址的值是未知的。

int array[]={0};

定义长度为9的整数数组。我建议使用 #define int const 来定义边界。例如,见下文

#define MAXINDEX 9
...
    int array[MAXINDEX];
    ...
    while (i < MAXINDEX){
    ...
    while (num < MAXINDEX){
    ...

int const MAXINDEX(9);