для следующей функцииToUpper возвращает целое число, а не символ
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;
}
}
вместо возвращения символов для полукокса борта [8] [8] возвращает целые числа, так мой вывод выглядит
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
а чем ожидаемый выход
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
Я также попытался объявить char a = board [i] [j]; cout < < toupper (a); в попытке подтвердить тип переменной как символ и получить тот же результат.
это назначение для класса, поэтому я не ожидаю большой помощи, я просто хочу знать, почему моя функция возвращает целые числа вместо символов, так что я знаю, что моя ошибка для будущей ссылки, Google didn ' много помогите. это какая-то проблема с объемом памяти?
Вы пробовали литье возвращаемого значения 'toupper'? –
Почему нет google в первую очередь для справки? – Abhi
Если вам просто нужна функция, которая преобразует верхние символы ASCII в верхние символы ASCII, я предлагаю использовать (или записывать) функцию, специфичную для этой кодировки. Такая функция может быть безопасна по типу, т. Е. Иметь дело с 'char' вместо' int ', и не нужно иметь дело с локалями (-> быстрее). – dyp