在编写我的高中课程作业时,我使用了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一样。其余的似乎是随机的。对于为什么会发生这种情况的任何想法?
答案 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);