表达式求值问题
#include <stdio.h>#include <conio.h>
#include <malloc.h>
#include <stdlib.h>
#define error 0;
#define True 1;
#define size 100;
#define addsize 10
typedef struct
{
char *top;
char *base;
int stacksize;
}sqstack;
int initstack(sqstack &s)//建立
{
s.base=(char *)malloc(sizeof(char));
if(!s.base)
return error;
s.top=s.base;
s.stacksize=size;
}
int push(sqstack &s,char e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(char *)realloc(s.base,(s.stacksize+addsize)*sizeof(char));
if(!s.base)
return error;
}
s.top=s.base+s.stacksize;
*s.top++=e;
s.stacksize+=addsize;
}
char pop(sqstack &s)
{
if(s.base=s.top)
return error;
char m;
m=*--s.top;
return m;
}
char gettop(sqstack s)
{ char x;
if(s.base=s.top)
return error;
x=*(s.top-1);
return x;
}
char m[7][7]=
{'>','>','<','<','<','>','>','>','>','<','<','<','>','>','>''>','>','>','<','>','>','>','>','>','>','<','>','>','<','<','<','<','<','=',' ','>','>','>','>',' ','>','>','<','<','<','<','<',' ','='};
int In(char x)
{
switch(x)
{
case '+':return 1;
case '-':return 1;
case '*':return 1;
case '/':return 1;
case '(':return 1;
case ')':return 1;
case '#':return 1;
default:return 0;
}
}
int sswitch(char x)
{
int m;
switch(x)
{
case '+':return 0;
case '-':return 1;
case '*':return 2;
case '/':return 3;
case '(':return 4;
case ')':return 5;
case '#':return 6;
}
}
char pan(char x,char y)
{
int i,j;
i=sswitch(x);
j=sswitch(y);
return m[i][j];
}
int preccd(char m,char eta,char n)
{
int i,j;
i=atoi(&m);
j=atoi(&n);
switch(eta)
{
case '+':return i+j;
case '-':return i-j;
case '*':return i*j;
case '/':return i/j;
}
}
char qiuzhi()
{
sqstack optr,opnd;//操作数,操作符
initstack(optr);
initstack(opnd);
char a,b,eta,c;
push(opnd,'#');
c=getchar();
while(c!='#'||gettop(opnd)!='#')
{
if(!In(c))
{
push(optr,c);
c=getchar();
break;
}
else
switch(pan(gettop(opnd),c))
{
case '<':push(opnd,c);c=getchar();
case '=':pop(opnd);c=getchar();
case '>':a=pop(optr);
b=pop(optr);
eta=pop(opnd);
push(optr,(char)preccd(a,eta,b));
}
}
return gettop(optr);
}
void main()
{
int m;
m=(int)qiuzhi();
printf("%d",m);
}
为什么输出是0啊,希望各位大神帮我看下,详细的告诉我下,有急用,谢谢了