switch语句不被执行.....

来源:百度知道 编辑:UC知道 时间:2024/05/27 22:11:20
typedef char OptrType;
.
.
.
char Precede(OptrType optr,char c){
//算符优先级比较
char relationship;
//the code used for comparing
char a=optr;
char b=c;

if(a=='+'||a=='-'){
if(b!='+'&&b!='-'&&b!='#')relationship='<';
else relationship='>';
}
if(a=='*'||a=='/'){
if(b!='(')relationship='<';
else relationship='>';
}
if(a=='('){
if(b==')')relationship='=';
if(b=='#')exit(0);
else relationship='<';
}
if(a==')'){
if(b=='(')exit(0);
else relationship='>';
}
if(a=='#'){
if(b==')')exit(0);
if(b=='#')relationship='=';
else relationship='<';
}
return relationship;
}//precede()结束

你的Precede函数里在判断优先级时,多次使用了exit函数。好奇怪啊,为什么不return个错误值呢?让主调函数进行判断,然后由主调函数根据错误情况返回上一级或是由main来return 1告诉系统,程序有错。改进下你的代码,然后让主调函数判断是否出错了,出错的话打印些错误消息!都看不到你在错误处理时的提示信息机制,是否偷懒不想写?如果你不这样做,写个程序错一个,自己都没能力纠错了!

同意一楼的,程序最起码也得给个完整的吧,这样看上很难发现问题