对于以下功能
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;
}
}
而不是为 char board[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); 试图将变量类型确认为字符并收到相同的输出。
这是一个班级的作业,所以我不希望有太多帮助,我只想知道为什么我的函数返回整数而不是字符,以便我知道我的错误是什么以供将来参考,谷歌并没有太大帮助。是toupper的某种范围问题吗?