首先,语法
else (a == '/')
return a/b;
是错误的,应该是
else if (a == '/')
return a/b;
其次,你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;
}
其确保的Compute
用户将仅使用这四个值中的一个的操作(a
)参数。
我可能没有在我的例子中使用最佳实践,所以我建议你阅读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;
}
}
我认为答案是否定的。 – Sahi
“更方便”是什么意思? –
[有没有一种方法可以将操作符转换为字符“+”为算术的实际运算符?](http://stackoverflow.com/questions/19242330/is-there-a-way-i -can-convert-an-operator-as-a-char-into-the-actual-operator) – Henrik