我们如何在 C 中将一个 char 标记为一个整数值并求和?

How do we sign a char an integer value in C and take a sum?

我正在制作一款井字游戏。 我想分配一个值为 4 的字符。例如:我想为 O 分配值 4,为 X 分配值 1。我尝试使用

char O = '4';

但是显示各种错误。我该如何解决这个问题并为该字符分配一个整数值? 我也想取值的总和。 这是代码:

    #include <stdio.h>
    
    int computerPlaysToWin(char board[3][3], int* cRow, int* cCol){
    
        char O='4';
        char X='1';
        int i;
        int j;
    
        
    
    
    
         for (i = 0; i < 3; i++){
             for(j = 0; j < 3 ; j++){
                 if ( board[i][j] + board[i][j+1] = 8 ){                      //For rows
                     printf("O", board[i][j+2]);
                 }
    
                 else if ( board[i][j+1] + board[i][j+2] = 8 ){               // For rows
                     printf("O", board[i][j]);
                 }
    
                 else if ( board[i][j] + board[i+1][j] = 8 ){                 // For columns
                     printf("O", board[i+2][j]);
                 }
    
    
                 else if ( board[i+1][j] + board[i+2][j] = 8 ){               //For columns
                      printf("O", board[i][j]);
    
                 }
    
                 else if ( board[i][j] + board[i+1][j+1] = 8 ) {             //For diagonals
                       printf("O", board[i+2][j+2]);
    
                 }
    
                 else if ( board[i+1][j+1] + board[i+2][j+2] = 8 ) {         //For diagonals
                       printf("O", board[i][j]);
    
                 }
    
                 else if ( board[i][j] + board[i+1][j-1] = 8 ) {            //For diagonals
                       printf("O", board[i+2][j-2]);
    
                 }
    
                 else if ( board[i+1][j-1] + board[i+2][j-2] = 8 ) {       //For diagonals
                       printf("O", board[i][j]);
    
                 }
             }
         }
    
    return 0;
    }





int main(void){
char board[3][3];
int row;
int col;

printf("Enter Row: ");
scanf("%d", &row);
printf("Enter column: ");
scanf("%d", &col);
printf("\n");
computerPlaysToWin(board, &row, &col);


}

错误是:


> computerPlaysToWin.c:16:47: error: expression is not assignable
>              if ( board[i][j] + board[i][j+1] = 8 ){                      //For rows
>                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ 


computerPlaysToWin.c:17:30: warning: data argument not used by format
> string [-Wformat-extra-args]
>                  printf("O", board[i][j+2]);
>                         ~~~  ^ computerPlaysToWin.c:20:54: error: expression is not assignable
>              else if ( board[i][j+1] + board[i][j+2] = 8 ){               // For rows
>                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ 



computerPlaysToWin.c:21:30: warning: data argument not used by format
> string [-Wformat-extra-args]
>                  printf("O", board[i][j]);
>                         ~~~  ^ computerPlaysToWin.c:24:52: error: expression is not assignable
>              else if ( board[i][j] + board[i+1][j] = 8 ){                 // For columns
>                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ 



computerPlaysToWin.c:25:30: warning: data argument not used by format
> string [-Wformat-extra-args]
>                  printf("O", board[i+2][j]);
>                         ~~~  ^ computerPlaysToWin.c:29:54: error: expression is not assignable
>              else if ( board[i+1][j] + board[i+2][j] = 8 ){               //For columns
>                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ 



computerPlaysToWin.c:30:31: warning: data argument not used by format
> string [-Wformat-extra-args]
>                   printf("O", board[i][j]);
>                          ~~~  ^ computerPlaysToWin.c:34:54: error: expression is not assignable
>              else if ( board[i][j] + board[i+1][j+1] = 8 ) {             //For diagonals
>                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ 



computerPlaysToWin.c:35:32: warning: data argument not used by format
> string [-Wformat-extra-args]
>                    printf("O", board[i+2][j+2]);
>                           ~~~  ^ computerPlaysToWin.c:39:58: error: expression is not assignable
>              else if ( board[i+1][j+1] + board[i+2][j+2] = 8 ) {         //For diagonals
>                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ 



computerPlaysToWin.c:40:32: warning: data argument not used by format
> string [-Wformat-extra-args]
>                    printf("O", board[i][j]);
>                           ~~~  ^ computerPlaysToWin.c:44:54: error: expression is not assignable
>              else if ( board[i][j] + board[i+1][j-1] = 8 ) {            //For diagonals
>                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ 



computerPlaysToWin.c:45:32: warning: data argument not used by format
> string [-Wformat-extra-args]
>                    printf("O", board[i+2][j-2]);
>                           ~~~  ^ computerPlaysToWin.c:49:58: error: expression is not assignable
>              else if ( board[i+1][j-1] + board[i+2][j-2] = 8 ) {       //For diagonals
>                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ 




computerPlaysToWin.c:50:32: warning: data argument not used by format
> string [-Wformat-extra-args]
>                    printf("O", board[i][j]);
>                           ~~~  ^ 8 warnings and 8 errors generated.

试试这个:

void computerPlaysToWin(char board[3][3], int* cRow, int* cCol){

    char O='4';
    char X='1';
    int i;
    int j;
    
     for (i = 0; i < 3; i++){
         for(j = 0; j < 3 ; j++){
             if ( board[i][j] + board[i][j+1] == 8 ){                      //For rows
                 printf("O %c", board[i][j+2]);
             }

             else if ( board[i][j+1] + board[i][j+2] == 8 ){               // For rows
                 printf("O %c", board[i][j]);
             }

             else if ( board[i][j] + board[i+1][j] == 8 ){                 // For columns
                 printf("O %c", board[i+2][j]);
             }

             else if ( board[i+1][j] + board[i+2][j] == 8 ){               //For columns
                  printf("O %c", board[i][j]);
             }

             else if ( board[i][j] + board[i+1][j+1] == 8 ) {             //For diagonals
                   printf("O %c", board[i+2][j+2]);
             }

             else if ( board[i+1][j+1] + board[i+2][j+2] == 8 ) {         //For diagonals
                   printf("O %c", board[i][j]);
             }

             else if ( board[i][j] + board[i+1][j-1] == 8 ) {            //For diagonals
                   printf("O %c", board[i+2][j-2]);
             }

             else if ( board[i+1][j-1] + board[i+2][j-2] == 8 ) {       //For diagonals
                   printf("O %c", board[i][j]);
             }
         }
     }
}

int main(void){
    char board[3][3];
    int row;
    int col;

    printf("Enter Row: ");
    scanf("%d", &row);
    printf("Enter column: ");
    scanf("%d", &col);
    printf("\n");
    computerPlaysToWin(board, &row, &col);
}