使用switch来进行运算符优先级判定的问题
int priority( char x, char y ) /*a栈顶 b当前*/{
/*0:x>y 1:x<y 2:x=y*/
switch( x )
{
case '+':{
switch( y )
{
case '+':return 0;break;
case '-':return 0;break;
case '*':return 1;break;
case '/':return 1;break;
case '(':return 1;break;
case ')':return 0;break;
case '#':return 0;break;
};
};break;
case '-':{
switch( y )
{
case '+':return 0;break;
case '-':return 0;break;
case '*':return 1;break;
case '/':return 1;break;
case '(':return 1;break;
case ')':return 0;break;
case '#':return 0;break;
};
};break;
case '*':{
switch( y )
{
case '+':return 0;break;
case '-':return 0;break;
case '*':return 0;break;
case '/':return 0;break;
case '(':return 1;break;
case ')':return 0;break;
case '#':return 0;break;
};
};break;
case '/':{
switch( y )
{
case '+':return 0;break;
case '-':return 0;break;
case '*':return 0;break;
case '/':return 0;break;
case '(':return 1;break;
case ')':return 0;break;
case '#':return 0;break;
};
};break;
case '(':{
switch( y )
{
case '+':return 1;break;
case '-':return 1;break;
case '*':return 1;break;
case '/':return 1;break;
case '(':return 1;break;
case ')':return 2;break;
};
};break;
case ')':{
switch( y )
{
case '+':return 0;break;
case '-':return 0;break;
case '*':return 0;break;
case '/':return 0;break;
case ')':return 0;break;
case '#':return 0;break;
};
};break;
case '#':{
switch( y )
{
case '+':return 1;break;
case '-':return 1;break;
case '*':return 1;break;
case '/':return 1;break;
case '(':return 1;break;
case '#':return 2;break;
};
};break;
default:exit(0);break;
}
}
代码如上 目前所有的语句全部警告为“不能到达的代码”
请问是什么原因导致如此
[此贴子已经被作者于2007-3-31 19:54:29编辑过]
----------------解决方案--------------------------------------------------------
switch( y )
{
case '+':return 0;break;
case '-':return 0;break;
case '*':return 1;break;
case '/':return 1;break;
case '(':return 1;break;
case ')':return 0;break;
case '#':return 0;break;
};
把这个break;全部删掉,
因有了return 就结束了本函数,后面的break;根不能达到.
----------------解决方案--------------------------------------------------------
但不是错误.
优先级这样设置也太复杂了吧.操作符的优先级不会因为操作符的改变而改变,所以不需要分别判断.
----------------解决方案--------------------------------------------------------