-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

2

'y'不等于'Y',所以ch不能同时等于两者。如果ch == 'y'是真的,那么ch == 'Y' 一定是假的,反之亦然。因此,表达式ch == 'y' && ch == 'Y'永远不可能为真,因为ch不能同时是两个不同的值。在任何给定时刻,它只能是一个(提示提示)另一个。

于 2021-09-13T18:01:55.227 回答
1

一个字母怎么可能同时等于“y”或“Y”?

用户只能输入一个字母“y”或“Y”或一些其他字母。

所以这个 if 语句

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

没有意义。if 语句的条件始终评估为逻辑假。

这个 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 时,第二个 if 语句中的条件评估为 false,反之亦然。

这个表达式的否定

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

相当于这个表达式

( ch != 'y' && ch != 'Y' ) 
于 2021-09-13T16:35:41.637 回答
0

阅读并研究下面的参考资料,然后您将更好地理解差异是什么以及您的陈述意味着什么。

逻辑运算符

比较运算符

于 2021-09-13T17:36:15.130 回答