刚学C语言,switch case问题

在力扣上做题,遇到有效的括号,因为还没学到栈,就使用了switch case 尝试一下,结果如图,请问case是不能用字符串吗?还是什么其他的原因?

img


int getvalue(char s)
    {
    int value;
    switch (s)
        {
            case ('('||')'): value=1;break;
            case ('['||']'): value=2;break;
            case ('{'||'}'): value=3;break;
            }
    return value;
    }

bool isValid(char * s){
    
    bool result=0;
    for (int i=0 ; i<strlen(s)/2 ;i++)
        {
        if(getvalue(s[i])==getvalue(s[strlen(s)-1]))
            {
            result = true;
            }
        else
            {
            result=false;
            break;
        }
        }
return result;
}
    

int getvalue(char s)
{
    int value;
    switch (s)
    {
        case '(':
        case ')': value=1;break;
        case '[':
        case ']': value=2;break;
        case '{':
        case '}': value=3;break;
    }
    return value;
}

bool isValid(char * s) {
    bool result=0;
    for (int i=0 ; i<strlen(s)/2 ;i++)
    {
        if(getvalue(s[i])==getvalue(s[strlen(s)-1]))
        {
            result = true;
        }
        else
        {
            result=false;
            break;
        }
    }
    return result;
}

switch……case语句中,switch后面跟一个变量,这个变量不可以是字符数组,字符指针,字符串数组,浮点型(实型)。它可以是整型,字符型(在本质上也是整型)。