toupper retorna inteiro em vez de char
para a seguinte função
void display()
{
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
if (board[i][j] < 84 && (i+j)%2 == 0)
SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 0x70);
else if (board[i][j] < 84 && (i+j)%2 == 1)
SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 0xc0);
else if (board[i][j] > 97 && (i+j)%2 == 0)
SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 0x7c);
else if (board[i][j] > 97 && (i+j)%2 == 1)
SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 0xc7);
cout << " " << toupper(board[i][j]) << " ";
}
cout << endl;
}
}
em vez de retornar caracteres para o quadro de caracteres [8] [8], ele retorna números inteiros para que minha saída se pareça com
82 78 66 81 75 66 78 82
80 80 80 80 80 80 80 80
32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32
80 80 80 80 80 80 80 80
82 78 66 81 75 66 78 82
em vez da produção esperada de
R N B Q K B N R
P P P P P P P P
P P P P P P P P
R N B Q K B N R
Eu também tentei declarar um char a = board [i] [j]; cout << toupper (a); em uma tentativa de confirmar o tipo de variável como um caractere e recebeu a mesma saída.
esta é uma tarefa para uma turma, então não espero muita ajuda, só quero saber por que minha função está retornando números inteiros no lugar de caracteres, para que eu saiba qual é o meu erro para referência futura, o Google não ajudou muito. é algum tipo de problema de escopo com o toupper?