如何比较字符与)或(在控制语句中?

时间:2016-04-08 19:11:35

标签: c

我试图编写以下函数,如果prcdop1>op2,它将返回1(我们假设+-*/()只是字符)

int prcd(char op1,char op2)
{
    switch(op1)
    {
        case '(':
            return 0;
            break;
        case ')':
            if(op2=='(') //doesn't work
            return 

        case '*':
        case '/':
        return 1;
        break;

        case '+':
        case '-':
            if(op2=='*' ||op2=='/')
            return 0;
            else return 1;
        break;

        default:
            return printf("invalid");
    }

}

2 个答案:

答案 0 :(得分:0)

case ')':
{
    if(op2=='(') //doesn't work
        return 
}

除了缺少;之外,您将返回没有值(这是一个int)。

成功返回后,printf函数返回打印的字符数。你确定这是你想要的吗?您似乎使用printf(7)的返回值作为错误返回。不会像-1那样更好吗?

我为每个案例添加了括号,因为它更容易阅读并查看它是如何设置的。即使不需要,我也会将中断设置为默认值,因为我希望在每种情况下保持习惯。

你最好不要使用。

int prcd(char op1,char op2)
{
    int retval;
    switch(op1)
    {
        case '(':
        {
            retval = 0;
            break;
        }
        case ')':
        {
            if(op2=='(')
            retval = 1;
            break; 
        }
        case '*':
        case '/':
        {
            retval = 1;
            break;
        }
        case '+':
        case '-':
        {
            if(op2=='*' ||op2=='/') retval 0;
            else retval 1;
            break;
        }
        default:
        {
            retval = printf("invalid"); // value is 7
            // would retval = -1; be a better error return?
            break;
        }
    }
    return retval;  
}

答案 1 :(得分:0)

每当你想要使用案例时你必须使用{statment},并且你需要申请代码,另一件事是你已经使用了返回但你没有说要返回什么。