我试图在If语句中使用数组

时间:2014-08-14 04:39:58

标签: c++ arrays if-statement

我试图在if语句中使用数组来确定x的值是否很少。

如果我这样做,一切都很常见。

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main(){
    int y[5] = {1,2,3,4,5};
    srand(time(0));
for(int z = 0; z <= 50; z++){
    int x = 1 + (rand()%6);
    cout << z;
    cout << " " <<x;
    if(y[5] == x){
        cout << ": Common" << endl;
    }else{
        cout << ": RARE" << endl;
    }
}

但如果我这样做,一切都很罕见。

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main(){
    int y[5] = {1,2,3,4,5};
    srand(time(0));
for(int z = 0; z <= 50; z++){
    int x = 1 + (rand()%6);
    cout << z;
    cout << " " <<x;
    if(y[5] == ++x){
        cout << ": Common" << endl;
    }else{
        cout << ": RARE" << endl;
    }
}

我真的很难于做什么可以有人请帮帮我?

2 个答案:

答案 0 :(得分:1)

您的程序有未定义的行为y[5]正在越过边界访问数组。

使用y[N-1]访问大小为N的数组的最后一个元素,因此您应该使用y[4]

答案 1 :(得分:1)

在这两种情况下,您还访问位置6(越界)的数组。你很幸运,第一个有效,但不是第二个。

将其更改为y[4](数组索引从0开始。)