“default”标签跳过“ ”的初始化操作问题解决
程序员文章站
2022-06-01 11:08:12
...
原因是在switch 中有初始化的工作。
在switch 语句中不可以有定义部分。如果有定义,如初始化的时候,必须把定义部分用{ } 括起来。
例如:
这段代码 case 后的代码增加了一个括号,括起来,没有这对括号就会报错
case binaryop:
{ // 增加的括号
bool end_right=false; // 标志操作符的右操作数是否结束
do
{
if(delayed_operations.empty())end_right=true;
else
{
prior=delayed_operations.top();
if(prior.Kind()==leftparen)end_right=true;
else if(prior.Priority()<current.Priority())end_right=true;
else if(current.Priority()==6)end_right=true;
else answer.Put_token(prior);
if(!end_right) delayed_operations.pop();
}
}while (!end_right);
delayed_operations.push(current);
break;
} // 增加的括号
default: cout<<" 你的输入格式可能不正确!"<<endl;break;