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

C 如何将字符与(或)或(在控制语句中)进行比较?,c,C,我正在尝试编写以下函数,如果op1>op2的prcd(我们假设+-*/()只是字符),它将返回1 除了缺少;,还返回了不带值(即int)的值 成功返回后,printf函数返回打印的字符数。您确定这是您想要的吗?似乎您正在使用printf(7)的返回值作为错误返回。像-1这样的值不是更好吗 我把每种情况都放在括号里,因为这样更容易阅读和查看它是如何设置的。我也把中断放在默认值中,即使它不是必需的,因为我想在每种情况下都保持这个习惯 你最好用它 int prcd(char op1,char op2)

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

除了缺少;,还返回了不带值(即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;  
}

每当你想使用用例时,你必须使用{station},并且你把需要应用的代码放在里面,另一件事是你已经使用了return,但是你没有说要返回什么。

你说的“不工作”是什么意思?调用函数时会发生什么情况?如何调用?使用什么参数?请尝试创建一个并向我们显示?注释下面的行中返回后缺少分号,但这不是问题所在,只是出于风格的考虑,在返回后不需要任何
中断
其他
语句,因为它不会被执行。虽然您的
case'):
可以进入下一个case,因为
返回是有条件的,并且case没有任何
中断;-)由于所有案例
return
您可以省略
默认案例,并移动
return printf(“无效”)到函数末尾。我的编译器警告我该函数不返回任何值。更好的是,重新构造代码。无论如何,
printf
返回打印的字符数,因此函数在默认情况下不会返回任何有用的值(7)。对于默认情况下,
printf
返回值的有用性,您会怎么说?他可能会将其用作错误测试,因为它比其他值大得多。我应该扩展这句话。我留着它,因为他用它作为返回值。他也可以返回-1或其他什么。
case ')':
{
    if(op2=='(') //doesn't work
        return 
}
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;  
}