C switch case REALY奇怪的结果

C switch case REALY奇怪的结果

问题描述:

因此,我试图在C中使用rand()命令,在这种情况下生成1到6之间的随机数。该部分完美,但后来我试图使用开关方法来计数每个数字有多少次出现,结果是......很奇怪。C switch case REALY奇怪的结果

继承人的代码:

包括

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个随机数字真的apeared,但这些都是结果:

个1:1978168284

二元数:-2

三元数: 1307605979

数四肢的:1978192464

数击掌的:6422480

数乱七八糟的:6422299

我看着代码几次,我只是不知道怎么说happend。 ..如果有人有fixisg的设备,请告诉我(:

+6

初始化您的变量。 –

+0

...意义设置'一=二= = =六= 0;'在循环之前。 C不适合你。 – Gene

具有自动存储时间的变量不会初始化为零。

你需要自己做。

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

+0

谢谢(:解决了它 –