我的代码有问题。 它总是无视 if(userDigit< = 6&& userDigit> = 1)..有人可以告诉我这里有什么问题吗?
for(i=0; i<4; i++)
{
userDigit=getch();
putch(userDigit);
if(userDigit<=6 && userDigit>=1)
{
//code
}
else
{
correct=0;
}
}
if(correct == 0)
{
printf("wrong");
correct++;
}
答案 0 :(得分:1)
getch()
返回表示输入字符编码值的int
,而不是数字本身。
幸运的是,C标准允许你写
userDigit = getch() - '0';
转换为数字的实际数值。任何非数字输入都将超出范围(0 - 9)。 (为避免疑义,'0'
是C中的int
类型。)
当然会破坏你的putch
功能(粗略地说你可以通过添加'0'
来转换回来),但我怀疑你有它用于调试目的,你可以安全地删除它。
答案 1 :(得分:1)
更改
if(userDigit<=6 && userDigit>=1)
到
if(userDigit<='6' && userDigit>='1')
这样可行,因为&#39; 0&#39;,&#39; 1&#39;,...符号具有相应的ASCII码,因此比较有效。