C开关盒REALY奇怪的结果

时间:2016-12-04 17:27:01

标签: c random switch-statement

所以我试图在C中使用rand()命令,在这种情况下生成1到6之间的随机数。那部分完美,但后来我尝试使用switch方法计算每个数字的数量,结果是......很奇怪。

继承人代码:

包括

int main() {

    int num;
    int number;
    int one;
    int two;
    int three;
    int four;
    int five;
    int six;

    printf("enter a number: ");
    scanf("%d", &num);
    for(int n = 1; n < num + 1; n++){
        number = (rand() % 6) +1;
        printf("%d", number);
        switch(number){
            case 1:
                one++;
                break;
            case 2:
                two++;
                break;
            case 3:
                three++;
                break;
            case 4:
                four++;
                break;
            case 5:
                five++;
                break;
            case 6:
                six++;
                break;
        }
    }
    printf("number of ones: %d\n"
            "number of twos: %d\n"
            "number of threes: %d\n"
            "number of fours: %d\n"
            "number of fives: %d\n"
            "number of sixes: %d\n",
            one, two, three, four, five, six);
    return 0;
}

当我运行它并在10中写入时,10个随机数字真的开始,但这些是结果:

个数:1978168284

两个数:-2

三人数:1307605979

四月:1978192464

五个人:6422480

六位数:6422299

我看了几遍代码,我根本不知道发生了什么......如果有人有修复程序,请告诉我(:

1 个答案:

答案 0 :(得分:1)

具有自动存储持续时间的变量未初始化为零。

你需要自己做。

在C中未定义读取未初始化变量的行为:您必须初始化它们。