【发布时间】:2014-11-15 18:42:53
【问题描述】:
对于下面的函数
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 是否存在某种范围问题?
【问题讨论】:
-
你试过转换
toupper的返回值吗? -
为什么不先google一下?
-
如果您只想要一个将 ASCII 大写字符转换为 ASCII 小写字符的函数,我建议使用(或编写)特定于该编码的函数。然后这样的函数可以是类型安全的,即处理
chars 而不是ints,并且不需要处理语言环境(-> 更快)。