很抱歉这个愚蠢的问题,我是个初学者,很难理解为什么下面的代码不能正常工作。
#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/