Öncelikle
,
else (a == '/')
return a/b;
yanlıştır sözdizimi ve
else if (a == '/')
return a/b;
İkincisi, sizin a
parametre yalnızca 4 ayrı değerler alabilir olmalıdır, bu nedenle iyi bir uygulama, örneğin bir numaralandırma kullanmaktır Compute
kullanıcı, sadece operasyon (a
) parametre için bu dört değerden birine kullanımı garanti eder
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;
}
.
Muhtemelen örneğimdeki en iyi uygulamaları kullanmadım, bu yüzden daha fazla ayrıntı için this answer numaralı telefonu okumanızı tavsiye ediyorum.
Son olarak bir switch deyimi kullanarak kod daha özlü yapabilir:
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;
}
}
Cevabın hayır olduğunu düşünüyorum. – Sahi
'Daha uygun' ile ne demek istiyorsun? –
Olası yinelenen [işleci aritmetik için asıl operatöre char + + 'olarak dönüştürebileceğim bir yol var mı?] (Http://stackoverflow.com/questions/19242330/is-there-a-way-i -can-convert-an-operatör-as-a-char-içine-gerçek-operatör) – Henrik