不应在C中更改整数变量的值

不应在C中更改整数变量的值

我不知道这是怎么回事。我正在做的一个项目是2048游戏。我正在用c语言编程。问题是,我最初声明的分数是0,还没有实现评分系统,但它随机变为4?(我已经打印出来了)
以下是我的部分代码:

  for(;;){
    printf("Score: %d",user_score);
    rand_i=rand()%(board_size+1);
    rand_j=rand()%(board_size+1);
    while(M[rand_i][rand_j]!=0){
            rand_i=rand()%(board_size+1);
            rand_j=rand()%(board_size+1);
    }
    rand_num= rand()%2*2+2;
    M[rand_i][rand_j]=(rand_num);
    for(i=0;i<board_size;i++){
            printf("\n");
            for(j=0;j<board_size;j++){
                    if (M[i][j]==0){
                            printf("[    ]");
                    }
                    else printf("[%4d]",M[i][j]);
            }
    }
    printf("\n(w=up, a=left, s=down, d=right, q=quit) > ");
    scanf("%c%c",&user_input);
    //system("clear");
    switch(user_input){
            case 'w':
                    for(j=0;j<board_size;j++){
                            for(i=0;i<board_size;i++){
                                    if(M[i][j]!=0 && i!=0){
                                           for(k=i;k>0;k--){
                                                    if(M[k-1][j]==0){
                                                            M[k-1][j]=M[k][j];
                                                            M[k][j]=0;

最佳答案

我想你写的不是数组M。

rand_i=rand()%(board_size+1);
rand_j=rand()%(board_size+1);

如果M声明为int M[board_size][board_size],则rand_i和rand_j可能太大。
希望这有帮助。

关于c - 不应在C中更改整数变量的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33796614/

10-10 02:06