首先,語法
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