[elektro] C kérdés plusz
Moczik Gabor
pm_levlista at progzmaster.hu
Fri May 16 22:30:25 CEST 2008
Kovács Árpád wrote:
> Az egyik Hg switch témájával kapcsolatban jött: nevezetesen olvastam egy C
> könyvben, hogy idézem: "a C nyelv készítői a goto utasítás létrehozását
> azzal indokolták, hogy a break utasítás egymásba ágyazott ciklusok esetén
> mindig csak egy szintet lép vissza, ezért ha egy belső ciklusból akarjuk az
> egész szerkezetet elhagyni szükség lehet egy címre történő ugrásra."
> Felhívja a figyelmet a könyv, hogy lehetőség szerint a goto-t kerüljük.
> Kérdésem, hogy akkor mivan, ha akkor az adott részt egy függvénybe rakom,
> akkor a return-el is bárhonnan kiszálhatok. Vagy így feleslegesen növelem a
> kódot?
Attol fugg. Nem a kodmeret ami lenyegesen novekszik egy beleforditott CALL
meg RET utasitas miatt, hanem a vegrehajtasi ido, ami esetleg problema. Meg
ha esetleg a ciklusvaltozok erteke kellene a torzsben, akkor at kell adni
parameterkent, ez plusz nehany regisztermasolas. Ha piszkalni kell a
ciklusvaltozokat a torzsben, akkor meg pointerkent kellene atadni, az megin
nem biznisz...
Ha ki kell ugrani a belso ciklusbol az egeszen kivulre, akkor pl. olyan
erteket adsz az osszes ciklusvaltozonak amivel vegeter a ciklusfeltetel.
> Másik téma már jobban izgat: ez az ún. cast-olás. Gyakori, hogy eltérő
> bitszélességű változok kerülnek egy képletbe. Ilyenkor van aki mindent
> cast-ol, kikényszerít, stb, biztos ami biztos alapon, hogy az eredmény
> helyes legyen. Van aki kisérletezik párat, hogy lesz jó, nem sokat vacakol.
> Én pedig szeretném inkább megérteni, mi a lelkivilága ennek a dolognak.
> Valaki el tudná röviden mondani, hogy a fordító hogyan "gondolkodik"
> ilyenkor? Mikor kötelező és mikor nem kell cast, mikor áll fenn a csonkolás
> veszélye?
Pontosan nem tudom, mert en is inkabb castolgatok ha vegyes dolgokat kell
egy kepletbe rakni, de ugy nez ki, balrol jobbra ertekeli ki, amit eloszor
talal, azzal a szelesseggel folytatja. Az elso elemet celszeru cast-olni
akkorara, amibe az eredmenynek bele kell fernie.
Ha u16=u8*u16 kepletet irsz, bar az eredmeny valtozo 16 bit, akkor se fogja
16 biten vegezni a szorzast, csak 8-on, es majd az eredmenyt castolja 16 bitre.
> Ja és még egy: pl. a 256L felírás ugyanazt eredményezi, mint a (long)256?
Igen.
--
((( Móczik Gábor )))--((( E~mail: "pm-01" @AT "progzmaster" .DOT "hu" )))
((( Skype: moczik )))
More information about the Elektro
mailing list