[elektro] Buta C kérdés switch/case
hg12345
hg12345 at freemail.hu
Thu Nov 10 17:20:07 CET 2011
Köszönöm a válaszokat.
szétszedtem a belépési pontokra....
Irtam, hogyha tudja... akkor ugrótáblát csinál belöle :-().
Megszivelem tanácsodat.
Lajos Rancz <lajos.rancz at gmail.com> írta:
>Hello!>
>
Ez igy van, de a switch-case konstrukcio nehany elem szetdobalasara lett>
kitalalva (tipikusan allapotgepekhez). Ebbe a logikaba nem annyira fer bele>
a tartomany, az egy masik konstrukcio.>
>
A switch-case kombinaciot se mindig ugrotablara forditja, hanem if-else-re,>
pl az altalunk hasznalt ARM926EJ-S - gcc kombonal egy ilyen switch-nel:>
switch (i)>
{>
case 0: .... break;>
case 5: .... break;>
case 23: .... break;>
}>
>
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;>
}>
>
Nehez megszokni, hogy a compiler nem olyat fordit mint amit az ember maga>
irna gepikodban, de idaig mindig megszivtam, ha megprobaltam tuljarni az>
eszen.>
Ha teljesen standard modon programozol, nem tersz el a bevalt receptektol>
akkor a compiler felismeri a patternt es tud optimalizalni. Ha varialsz,>
okosba probalod akkor nem ismeri fel es leforditja butan.>
>
Udv>
>
2011/11/10 hg12345 <hg12345 at freemail.hu>>
>
> Mert a switch/case jobb fordítók akár ugrótömbbel tudják helyettesíteni,>
> mig a elseif megoldást tudtommal nem.>
>>
> Amúgy a szerintem a switch jobban olvasható és bővithető mint az elseif>
> persze ez már teljesen szubjektiv.>
>>
>>
> Lajos Rancz <lajos.rancz at gmail.com> írta:>
> >Hello!>>
> >>
> Miert nem jo az if else if else konstrukcio?>>
> >>
> Udv>>
> >>
> 2011. november 10. 16:20 Elight írta, <elight at gmail.hu>:>>
> >>
> > Ha C család>>
> > már eccer szívtam vele én is.>>
> > Utána jártam és az okosok szerint nem.>>
> >>>
> > case 'A':>>
> > case 'B':>>
> > case 'C': .... break; // A..C esetben mindig lefut.>>
> >>>
> > sorozatot tehárt én sem tudtam kikerülni.>>
> > Más nyelvekben pl Perl tényleg van hasonló toól-igolás is.>>
> >>>
> > Üdv István>>
> >>>
> > 2011.11.10. 15:51:14 dátumon hg12345 <hg12345 at freemail.hu> írta:>>
> >>>
> > > Hi>>
> > >>>
> > > elvileg kéne müködnie a case ágban a taratomány megadásnak>>
> > >>>
> > > case 5...30:>>
> > >>>
> > > de fordítás után hiányolja a ":" és nem csinál futtatható kódot. A>>
> > > forditó elméletig ismeri "KEIL C" a help-je tartalmaz ilyen>>
> > > mintapéldást, de az se müködik....>>
> > >>>
> > > Ez most tartalmazza az ANSI C vagy nem?>>
> > >>>
> > > Üdv>>
> > > Gábor>>
> > >>>
> > > ----------------------------------------->>
> > > elektro[-flame|-etc]>>
> >>>
> >>>
> > -->>
> > Az Opera forradalmian új levelezőjét használva:>
> http://www.opera.com/mail/>>
> >>>
> > ----------------------------------------->>
> > elektro[-flame|-etc]>>
> ----------------------------------------->>
> elektro[-flame|-etc]>>
>>
>>
> ----------------------------------------->
> elektro[-flame|-etc]>
>>
----------------------------------------->
elektro[-flame|-etc]>
More information about the Elektro
mailing list