问题描述
#include <stdio.h>
#include <stdlib.h>
double compute(char symbol,double op1,double op2)
{
switch(symbol)
{
case '+': return op1+op2;
case '-': return op1-op2;
case '*': return op1*op2;
case '$':
case '^': return (op1,op2);
}
}
main()
{
double s[20],res,op1,op2;
int top,i;
char postfix[20];
char symbol;
printf("Enter postfix");
scanf("%s",postfix);
top=-1;
for(i=0;i<stlen(postfix);i++)
symbol=postfix[i];
if(isdigit(symbol))
s[++top]=symbol='0';
else
{
op2=s[top--];
op1=s[top--];
}
res=compute(symbol,op2);
s[++top]=res;
}
res=s[top--];
printf("res is %d",res);
}
我可能在这里遗漏了一些东西,因为它表明s
未声明,但是正如您所看到的,我在s
之后两次声明了main()
解决方法
这3行不在任何范围内
res=s[top--];
printf("res is %d",res);
}
这就是为什么您有错误。