c - 超出范围的数字给出了意外的输出
问题描述
我有这个数字猜谜游戏,玩家 1 输入一个数字,玩家 2 必须猜那个数字。如果玩家 2 输入的数字超过 1000,则会打印“该数字超出范围”。
int player2(int number)
{
int i, currentGuess;
printf("Player 2, you have 10 guesses remaining\n");
//For Player 2
for (i = 1; i <= MAX_GUESS; i++) {
int remaining = MAX_GUESS - i;
printf("Enter your guess:\n");
scanf_s("%i", ¤tGuess);
if (currentGuess > 1000) {
printf("That number is out of range.\n");
}
else if (currentGuess > number) {
printf("Too high.\n");
printf("Player 2, you have %i guesses remaining\n", remaining);
if (remaining == 0) {
printf("Player 1 wins\n");
}
}
else if (currentGuess < number) {
printf("Too low.\n");
printf("Player 2, you have %i guesses remaining\n", remaining);
if (remaining == 0) {
printf("Player 1 wins\n");
}
}
else if (currentGuess = number) {
printf("Player 2 wins\n");
return 0;
}
}
return i;
}
如果玩家 2 输入 1001,则正确消息“此数字超出范围”。将会给予。问题是如果玩家 2 输入 11111111,输出消息“太低”。而不是“这个数字超出范围”。为什么会这样?
解决方案
你可能在这里有一个整数溢出。您的数字太大,它被解释为负数。
将变量的声明更改为:
unsigned int i, currentGuess;
此外,您可以限制您的扫描子句以避免此类问题:
scanf_s("%5d", ¤tGuess);
推荐阅读
- javascript - 尝试从 Google 地图中的 JSON 文件调用数据时出错
- intellij-idea - CLion:外部工具中“工作目录”的宏无法解析
- angular - ANGULAR 没有向我的特定 Http Post 请求发送标头
- python - 带有 sphinx 新行的 Python 自动文档字符串
- c++ - 在 macOS 上的 CLion 中导入 Bazel 项目失败
- security - 身份服务器 4 会话/cookie 相关问题
- node.js - 在 Heroku 上托管时出现 socket.io 问题
- html - 行中的第一列不会像其他列一样样式
- java - Android中的平铺精灵
- javascript - 在JavaScript中将最低有效数字移出十六进制序列