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()
实际上与您的问题无关。