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

问题描述 投票:2回答:2

我的代码有问题。它总是忽略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++;
        }
c if-statement getch
2个回答
1
投票

getch()返回表示输入字符编码值的int,而不是数字本身。

幸运的是C标准允许你写

userDigit = getch() - '0';

转换为数字的实际数值。任何非数字输入都将超出范围(0 - 9)。 (为避免疑问,'0'是C中的int类型。)

当然,这将打破你的putch功能(粗略地你可以通过添加'0'转换回来),但我怀疑你有它在那里用于调试目的,你可以安全地删除它。


1
投票

更改

if(userDigit<=6 && userDigit>=1)

if(userDigit<='6' && userDigit>='1')

这将起作用,因为'0','1',...符号具有相应的ASCII码,因此比较是有效的。

© www.soinside.com 2019 - 2024. All rights reserved.