[elektro] Buta C kérdés switch/case
Móczik Gábor
pm_levlista at progzmaster.hu
Sat Nov 12 00:17:27 CET 2011
2011.11.10. 17:00 keltezéssel, Lajos Rancz írta:
> De mit szolnal hozza, ha lenne intervallumos konstrukcio es az alabbi
> kodra csinalna neked egy 100 ezer elemu ugrotablat?
> switch (i)
> {
> case 0-50000: ... break;
> case 50001-100000: ... break;
> default: ... break;
Szerintem a compiler se teljesen hülye, biztosan van egy limit amit
figyelembe vesz, és ha van egy 5 állapotú választás, arra csinál egy
ugrótáblát, ha meg 1, 100, 100000 közül kell választani, akkor nem.
Azt szoktam csinálni, hogy ha van sok definiált gyakori érték amire
dönteni kell, meg van pár tartomány amire másképp, akkor a default ágba
teszem:
switch(x) {
case 1:
... break;
case 2:
... break;
case 3:
... break;
// ...
default:
if (x>=20 && x<=40) {
...
} else ...
}
Mindig azt kell választani ami a feladatnak megfelel, pl. ha itt
jellemzően a default ág futna le a leggyakrabban, akkor ez így nem túl
hatékony, akkor inkább azt kell kívülre tenni, és a case szerkezetet az
else ágba.
Egyébként én is jobban szeretem a switch/case szerkezetet, ahol csak
lehet, mert sokkal áttekinthetőbb mint egy rakás if/else. Még akkor is,
ha tartományra kell választani, de a tartomány nem széles, olyankor jön
a pár felsorolt case, break nélkül.
More information about the Elektro
mailing list