我的目标是使用switch语句简化我的功能,但我无法弄清楚如何在switch语句中包含一段代码。如果我添加了printf("(");
和infixTree(node->left);
,那么如果我在每种情况下都添加了这些代码行,那么它们会在意外时间被调用吗?
这是我目前的职能。
void infixTree(ExpNode* node)
{
if(node->type==INTEGER)
{
printf("%d",node->value.value.iVal);
return;
}
if(node->type==DOUBLE)
{
printf("%f",node->value.value.dVal);
return;
}
if(node->type==SYMBOL)
{
printf("%s",node->symbol);
return;
}
printf("(");
infixTree(node->left);
if(node->type==ADD_OP)
{
printf(" + ");
}
else if(node->type==SUB_OP)
{
printf(" - ");
}
else if(node->type==MUL_OP)
{
printf(" * ");
}
else if(node->type==DIV_OP)
{
printf(" / ");
}
else if(node->type==MOD_OP)
{
printf(" %% ");
}
else if(node->type==ASSIGN_OP)
{
printf(" = ");
}
infixTree(node->right);
printf(")");
}
我不知道如何包含
printf("(");
infixTree(node->left);
我目前使用switch语句的功能如下所示。
void infixTree(ExpNode* node)
{
switch(node->type)
{
case INTEGER :
printf("%d", node->value.value.iVal);
return;
case DOUBLE :
printf("%f", node->value.value.dVal);
return;
case SYMBOL :
printf*%s", node->symbol);
return;
}
switch(node->type)
{
case ADD_OP:
printf("(");
infixTree(node->left);
printf(" + ");
break;
case SUB_OP:
printf("(");
infixTree(node->left);
printf(" - ");
break;
case MUL_OP :
printf("(");
infixTree(node->left);
printf(" * ");
break;
case DIV_OP :
printf("(");
infixTree(node->left);
printf(" / ");
break;
case MOD_OP :
printf("(");
infixTree(node->left);
printf(" %% ");
break;
case ASSIGN_OP :
printf("(");
infixTree(node->left);
printf(" = ");
break;
}
infixTree(node->right);
printf(")");
}