-10
#include<stdio.h>
int main()
{
    int a;
    int count;
    char ch;
    for(a=1;a<=100;a++)
    {
        printf("%d\n",a);
        printf("do you want to break loop(y/n):");
        scanf(" %c",&ch);
        
        if(ch=='y' || ch=='Y')
        {
            break;
        }
    }
}

if(ch=='y' || ch=='Y')これは、または入力したときにのみ機能し 、すべての条件で両方が真である if(ch!='y' && ch!='Y') ときに入力すると機能しません if(ch=='y' && ch=='Y')

4

3 に答える 3

1

1 つの文字が同時に 'y' または 'Y' に等しいのはなぜですか?

ユーザーは、「y」、「Y」、またはその他の文字のいずれか 1 文字のみを入力できます。

したがって、この if ステートメント

if(ch=='y' && ch=='Y')

意味がありません。if ステートメントの条件は、常に論理 false に評価されます。

このif文

if(ch=='y' || ch=='Y')

ユーザーが文字 'y' または文字 'Y' のどちらを入力したかを判別します。

このif文

if(ch!='y' && ch!='Y')

ユーザーが「y」でも「Y」でもない別の文字を入力したことを意味します。上記のステートメントは、次のように書き換えることもできます

if( !( ch == 'y' || ch =='Y' ) )

このif文

if(ch!='y' && ch!='Y')

このifステートメントの反対です

if(ch=='y' || ch=='Y')

つまり、最初の if ステートメントの条件が true と評価され、次に 2 番目の if ステートメントの条件が false と評価され、その逆の場合です。

この表現の否定

!( ch=='y' || ch=='Y' ) 

は、この式と同等です

( ch != 'y' && ch != 'Y' ) 
于 2021-09-13T16:35:41.637 に答える