Zunächst wird die Syntax
else (a == '/')
return a/b;
falsch ist, und sollte
else if (a == '/')
return a/b;
Zweitens sein, Ihre a
Parameter nur vier diskrete Werte annehmen kann, so gute Praxis ist eine Aufzählung zu verwenden, z.B.
enum Operation
{
kAddition,
kSubtraction,
kMultiplication,
kDivision
};
int Compute(Operation a, int a, int b)
{
if (a == kAddition)
return a+b;
else if (a == kSubtraction)
return a-b;
else if (a == kMultiplication)
return a*b;
else if (a == kDivision)
return a/b;
}
, die sicherstellt, dass der Benutzer von Compute
nur eine dieser vier Werte für die Operation (a
) Parameter verwenden wird.
Ich habe wahrscheinlich keine Best Practices in meinem Beispiel verwendet, daher empfehle ich Ihnen, lesen Sie this answer für weitere Details.
Schließlich könnten Sie den Code übersichtlicher machen, indem ein Schalter-Anweisung:
enum Operation
{
kAddition,
kSubtraction,
kMultiplication,
kDivision
};
int Compute(Operation a, int a, int b)
{
switch (a)
{
case kAddition:
return a+b;
case kSubtraction:
return a-b;
case kMultiplication:
return a*b;
case kDivision:
return a/b;
}
}
Ich denke, die Antwort ist nein. – Sahi
was meinst du mit 'bequemer'? –
Mögliches Duplikat von [gibt es eine Möglichkeit, einen Operator als char + in den tatsächlichen Operator für Arithmetik zu konvertieren?] (Http://stackoverflow.com/questions/19242330/is-there-a-way-i -Konvertieren-ein-Operator-als-Char-in-den-tatsächlichen-Operator) – Henrik