Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C-Noob误差与简单的三向比较_C_Getch - Fatal编程技术网

C-Noob误差与简单的三向比较

C-Noob误差与简单的三向比较,c,getch,C,Getch,对于这个愚蠢的问题,我深表歉意。我是一个初学者,很难理解为什么下面的代码不能正常工作 #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 !=

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

#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;
        }
    }
}
#包括
#包括
int main()
{
int j='';
整数检查=0;
printf(“\n请输入A、B或C\n”);
j=getch();
while(检查==0)
{
如果(j!=“A”| |“B”| |“C”)
{
printf(“\n无效输入,请输入A、B或C\n”);
j=getch();
}
其他的
{
检查=1;
}
}
}
我只想让这个简单的程序使用
getch()
(是的,我需要使用
getch()
)输入A、B或C,并使用
while
循环来确认条目实际上是A、B或C。但是,我运行程序,即使输入A、B或C,程序也会告诉我条目无效。有人能帮我一下,告诉我我做错了什么吗

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

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

if(j != 'A' || 'B' != 0 || 'C' != 0)
'B'
'C'
都具有非零值,因此条件将始终计算为真

我想您需要检查
j
是否不是列出的任何值。如果是这样的话,这条线应该是

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

if(j != 'A' || 'B' != 0 || 'C' != 0)
'B'
'C'
都具有非零值,因此条件将始终计算为真

我想您需要检查
j
是否不是列出的任何值。如果是这样的话,这条线应该是

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

执行以下替换操作:

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

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

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

另外,要使getchar()正常工作,请在需要时包括

执行以下替换:

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

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

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

另外,为了让getchar()正常工作,如果需要,请包括

我犯了一个愚蠢的错误。非常感谢。我犯了个愚蠢的错误。非常感谢。欢迎来到Stack Overflow。请尽快阅读这一页。请注意,
getch()
是在Windows上的
和Unix上的
中声明的特定于平台的函数(其使用还需要至少一个设置函数调用)。但是,使用
getch()
实际上与您的问题无关。欢迎使用堆栈溢出。请尽快阅读这一页。请注意,
getch()
是在Windows上的
和Unix上的
中声明的特定于平台的函数(其使用还需要至少一个设置函数调用)。然而,使用
getch()
实际上与您的问题无关。