switch结构,明明输入的是‘)’,结果硬是case到了‘#’
char precede(char a,char b)
{
char f;
switch(b)
{
case '+':
case '-':if(a == '(' || a == '#')
f = '<';
else
f = '>';
break;
case '*':
case '/':if(a == ')'|| a == '*' || a == '/')
f = '>';
else
f = '<';
break;
case '(':if(a == ')')
{
cout << "括号不符合规则!" << endl;
exit(-1);
}
else
f = '<';
break;
case ')':switch(a)
{
case '(':f = '=';
break;
case '#':
{
cout << "缺失左括号" << endl;
exit(-1);
}
default:f = '>';
}
//break;
case '#':switch(a)
{
case '(':
cout<< "x == " << a;
cout << "c == " << b;
cout << "缺失右括号" << endl;
exit(-1);
case '#':f = '=';
break;
default: f = '>';
}
}
return f;
}
因为没有break,所以也走到了#
每一个case都这样写 case:{代码块}这样写的错误是避免程序无故出现bug,每一个case都要带break