我试图编写以下函数,如果prcd
为op1>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");
}
}
答案 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},并且你需要申请代码,另一件事是你已经使用了返回但你没有说要返回什么。