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()(Yes, I need to use 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'ゼロ以外の値があるため、条件は常に true と評価されます。

jリストされている値のいずれでもないことを確認したいと思います。もしそうなら、行は

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