C-ben szabad karakterrel (char) helyettesíteni a más nyelvekben létező byte típust?
Egy egész szám (int) 4 bájton tárolódik a memóriában, így 2^32 féle értéket vehet fel (előjelesen 2^31 - 1 és - 2°^31 között, beleértve a határokat is). a karakter (char) viszont csak 1 bájtot foglal, azaz 2^8 féle értéket vehet fel, előjelesen 127 és -128 között, őket is belevéve.
Így, ha egy egész szám változóról tudom, hogy nem fog felvenni már 100-nál nagyobb értéket sem, akkor, ha int helyett char típust használok, 3 bájtot spórolok.
Megtehetem, mert egy char típusú változó értéke valójában egy szám, amely az adott karakter ASCII kódja, műveleteket is végezhetek vele.
Igen, sőt, az byte is, régi téves koncepció hogy az csak karakter lehet. De elárulom neked, hogy egyetlen deka bitet nem spórolsz meg vele, mert a fordító kiegészíti egész memória-szavakra (4 vagy 8 bájt).
Esetleg keress rá az attribute=packed lehetőségre.
De a cpu működés miatt lassabb is lenne. Programozásnál nem szokás mikrooptimalizálást végrehajtani, mert általában csak ront mindenen. A fordítók elég jó munkát végeznek optimalizálásban, ha megkéred őket.
Olyan 4 bájton pl. kétjegyű számot tárolni, mint teremgarázst építeni egy biciklinek. A szám elfér 1 bájton, 3 kihasználatlan marad. 3 db másik ilyen kis szám tárolására szánt, karakter típusú változó is elfér mellette akár. + a feladatban, aminek kapcsán meglátszott ennek a lehetősége, ez a helyzet fennáll.
Ez ellen szólhat, hogy a feladat szerint ezek a változók a halomban lesznek tárolva, amelyben bőségesen van hely.
#3, bocsi, hamarabb írtam, mint elolvastam
Ez csalás.
Ezek szerint típusok terén nem érdemes variálni.
Viszont jobb akkor ezeket észben tartani, ha kísérletezni kezdünk
ma 19:48
De te most mit akarsz programozni, első éves vagy egyetemen és ez a házi, vagy mi? Mert akkor a tanár is le fog cseszni, hogy olvasható legyen a kódod, és ne "optimalizált".
#5: Az ilyen jellegű optimalizálásnak akkor van jelentősége, ha biztosan szükség van rá. Valami ősrégi beágyazott rendszerre kell fejleszteni az alkalmazást, ahol néhány kB memória van csak? Ha nem, akkor nem érdemes ezzel foglalkozni, mert csak feleslegesen bonyolít.
Arról nem beszélve hogy a legtöbb optimalizálásnak van valami hátulütője, például memóriára optimalizálásnál általában lassabb futást kapunk, míg futásidőre optimalizálásnál rosszabb memóriagazdálkodást. Biztos jó ez nekünk?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!