0

为愚蠢的问题道歉,我有点初学者,无法理解为什么以下代码无法正常工作。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int j = ' ';
    int check = 0;

    printf("\nPlease enter A, B, or C\n");
    j = getch();

    while(check == 0)
    {
        if(j != 'A' || 'B' || 'C')
        {
            printf("\nInvalid entry, please enter either an A, B, or C\n");
            j = getch();
        }
        else
        {
            check = 1;
        }
    }
}

我想要这个简单的程序做的就是使用getch()(是的,我需要使用getch())获取 A、B 或 C,并使用我的while循环来确认该条目实际上是 A、B 或 C。但是,我运行程序,即使我输入了 A、B 或 C,程序也会告诉我我的输入无效。有人可以在这里帮助我并告诉我我做错了什么吗?

我觉得这与它以 ASCII 整数形式读取字符有关,但我真的不知道如何解决这个问题。

4

2 回答 2

4
if(j != 'A' || 'B' || 'C')

相当于

if(j != 'A' || 'B' != 0 || 'C' != 0)

两者都'B'具有'C'非零值,因此条件将始终评估为真。

我认为您想检查j是否没有列出任何值。如果是这样,该行应该是

if(j != 'A' && j != 'B' && j != 'C')
于 2013-10-13T22:27:19.810 回答
0

执行以下替换:

int j = ' '; /* to */  char j = ' ';

if(j != 'A' || 'B' || 'C') /* to */ if(j != 'A' && j != 'B' && j != 'C')

j = getch(); /* to */ j=getchar();

此外,为了使 getchar() 工作,<conio.h>如果需要,请包含。

于 2017-11-06T18:52:52.770 回答