next up previous contents
Elõre: A felsorolt típus Fel: A változók alaptípusai Vissza: A karakter típus és

Az egész típusok

Az egész típusú változók méret és értelmezés szerint többfélék lehetnek. Méret szerint a BORLAND C++ megkülönböztet rövid (short int) és hosszú (long int) egészeket, az elõbbieket 16, az utóbbiakat 32 biten ábrázolja. Ha nem specifikáljuk az egész típusú változó méretét, hanem csak int-et adunk meg, akkor minden C fordító többé-kevésbé önkényesen választja azt meg, a BORLAND C++ például 16 bites hosszat vesz fel. Ha ki akarjuk használni a C nyelvben rejlõ portabilitási képességet, akkor mindig használjunk explicit méretmegadást, az alábbi négy eset kivételével:

Az elõbbi kivételek magyarázatát természetesen megadjuk a megfelelõ helyeken. Ezekben az esetekben azonban a programozó felelõssége, hogy a méretmegadás nélkül felvett változót lgfeljebb 16 bit hosszúként kezelje (ennél kisebb hosszat int-re egyetlen komoly C fordító sem vesz fel).

Értelmezés szerint az egészek lehetnek elõjelesek (signed int) és elõjel nélküliek (unsigned int). Ha nem írjuk elõ az értelmezést, akkor a fordító elõjeles egészt vesz fel. Ily módon például a short int típusú változók -32768 és 32767 között, az unsigned short int típusúak pedig 0 és 65535 között vehetnek fel értéket. Itt jegyezzük meg, hogy a char típuson belül is létezik unsigned char, ez akkor lényeges, ha a szabványos ASCII készlettõl eltérõ értéket kívánunk benne tárolni. Ekkor a char úgy tekinthetõ, mint egy 8 bites egész típus, -128 és 127 illetve 0 és 255 közötti értékekkel. Fontos tudnivaló, hogy a BORLAND C++ a karakteres típussal való bármilyen mûveletvégzés elõtt (aritmetikai, logikai, összehasonlító, stb. mûvelet) azt 16 bitre terjeszti ki, figyelembe véve az értelmezését. Igy tehát bármilyen mûveletvégzés szempontjából a signed char-ban tárolt hexadecimális 80 hexadecimális FF80-ként lesz figyelembe véve, míg az unsigned char-ban tárolt hexadecimális 80 ténylegesen hexadecimális 0080-nak számít. Tételezzük fel, hogy az alfa változó típusa signed char, a beta változóé pedig unsigned char, és mindkettõbe a 128 egész értéket írjuk. Ha alfa-t ezután összehasonlítjuk 128-cal, akkor hamis logikai értéket kapunk, míg beta-t összehasonlítva vele, igazat! Sõt, alfa sem lesz egyenlõ beta-val.

Az egész típusú konstansokat decimálisan, oktálisan és hexadecimálisan is megadhatjuk. Az oktális konstansok kötelezõen 0-val kezdõdnek, a hexadecimálisak pedig 0x, vagy 0X elõtaggal (prefix-szel). Például 255 = 0377 = 0xFF. A konstansokhoz is rendel méretet és értelmezést a fordítóprogram. A szabály az a BORLAND C++-ban, hogy a méret mindaddig 16 bit, amíg ennyi bittel a megadott szám ábrázolható, azon felül 32 bites az ábrázolás. Az értelmezés decimális konstansokra elõjeles, a többire elõjel nélküli. Például a 40000 elõjeles egész konstans, mérete 32 bit (mert 16 biten a legnagyobb elõjeles szám a 32767), de 0x89A0 elõjel nélküli 16 bites konstans. Lehetõség van azonban az l, illetve az L utótaggal ( suffix) elõírni egy konstansra a 32 bites tárolást; az u, vagy U utótaggal pedig az elõjel nélküli értelmezést. Például 0L 32 bites elõjeles, 40000U pedig 16 bites elõjel nélküli egész konstans.


next up previous contents
Elõre: A felsorolt típus Fel: A változók alaptípusai Vissza: A karakter típus és