很抱歉这个愚蠢的问题,我是个初学者,很难理解为什么下面的代码不能正常工作。

#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、ab或ac。但是,我运行程序,即使输入A、B或ac,程序也会告诉我条目无效。有人能帮我告诉我我做错了什么吗?
我觉得这与它将字符读入ASCII整数有关,但我真的不知道如何修复它。

最佳答案

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

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

'B''C'都有非零值,因此条件将始终计算为true。
我想您需要检查j没有列出任何值。如果是的话,应该是
if(j != 'A' && j != 'B' && j != 'C')

关于c - C-简单的三向比较Noob错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19351012/

10-13 01:49