在getch()之后程序忽略if​​甚至在输入1-6之后。

时间:2017-12-21 16:56:54

标签: c if-statement getch

我的代码有问题。 它总是无视 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++;
        }

2 个答案:

答案 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码,因此比较有效。