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;
}