我的代码有问题。它总是忽略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++;
}
getch()
返回表示输入字符编码值的int
,而不是数字本身。
幸运的是C标准允许你写
userDigit = getch() - '0';
转换为数字的实际数值。任何非数字输入都将超出范围(0 - 9)。 (为避免疑问,'0'
是C中的int
类型。)
当然,这将打破你的putch
功能(粗略地你可以通过添加'0'
转换回来),但我怀疑你有它在那里用于调试目的,你可以安全地删除它。
更改
if(userDigit<=6 && userDigit>=1)
至
if(userDigit<='6' && userDigit>='1')
这将起作用,因为'0','1',...符号具有相应的ASCII码,因此比较是有效的。