私の目標はswitch文を使用して関数を単純化することですが、switch文にコードを含める方法を理解することはできません。 printf("(");
とinfixTree(node->left);
を追加しても、それぞれのケースでこれらのコード行を追加すると、予期しない時刻に呼び出されることはありませんか?if文をswitch文に変換する
ここに私の現在の機能があります。
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(")");
}
私は、switch文を使用して私の機能は、現時点では、このようになります
printf("(");
infixTree(node->left);
が含まれるのか分かりません。
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(")");
}
を記述し、それは間違いでした。それはそこにあったはずです。編集 – FatFockFrank
2つの異なるelsifはしごのように、2つの異なる 'switch'esを持つことができます。 –
さて、私はそれを編集しました。 – FatFockFrank