C语言 想判断输入的字符串是不是y或者Y,但是我这样写不管输入什么都会判定为y或Y


#include<stdio.h>
#include<math.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
int main(){
    char str8[100] = { 0 };
    size_t len8;
    getchar();
    scanf("%[^\n]",str8);
    len8 = strlen(str8);
    if(str8[0]='y'||'Y')
    {
        printf("dsfdfsf");

    }
    else{
        printf("wdwqqewqe");
    }
    return 0;
}

img

首先,判断是否相等是用 if(a == b),而不是单个等号,单个等号是赋值,在任何情况下都为真,所以不管输入什么结果都不变;
其次,判断不是y或者Y应该写成 if(str8[0]=='y'|| str8[0]=='Y'),如果写成if(str8[0]=='y'||'Y'),意思就变成判断 (str8[0]=='y')或 ‘Y’是否为真,非零常数在任何情况下都为真,所以一样是导致不管输入什么结果都不变;
建议多撸几遍C语言的基础。

if(str8[0] == 'y' || str8[0] =='Y')