まず、構文
else (a == '/')
return a/b;
が間違っている、と
else if (a == '/')
return a/b;
第二に、あなたのa
パラメータは唯一の4つの離散的な値を取ることができ、とても良い練習は、例えば、列挙型を使用することであるべきですCompute
のユーザのみが操作(a
)パラメータに対して、これら4つの値のいずれかを使用することを保証する
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;
}
。
私の例ではベストプラクティスを使用していない可能性がありますので、詳細はthis answerをお読みください。
最後にあなたはswitch文を使用して、コードをより簡潔にすることができます:
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;
}
}
私は答えはNOだと思います。 – Sahi
「もっと便利です」とはどういう意味ですか? –
[(演算子の実際の演算子に)演算子を変換する方法はありますか?](http://stackoverflow.com/questions/19242330/is-there-a-way-i) -can-convert-an-char-as-the-the-actual-operator) – Henrik