Cikk 7. lecke

Így annak érdekében, hogy a pontos adatokat, használja az típusleíróval - egy vagy több kulcsfontosságú szavakat, amelyek meghatározzák, hogy milyen típusú változó deklarált. A C nyelv rendelkezik egy szabványos adattípusok, amelyek lehet kialakítani az új (egyedi, egyéni) adattípusok. Ez a kérdés csak később, most elemzik a hagyományos típusokhoz.
Integral típusok: int, char, rövid, hosszú.

Lebegő típusok: úszó, dupla.

Ha írsz csak az aláírt vagy aláíratlan és akkor ne tegye többet, mint bármely kulcsszó (azonnal megy változó azonosító), akkor ezt a változót kell kezelni, mint egy egész típusú változó.

int c; (Jelentés aláírt int c);

előjel nélküli d; (Feltételezve, unsigned int d);

aláírt f; (Jelentés aláírt int f).

Annak megállapításához az adatokat az egész típusú különböző kulcsszavakat, amelyek meghatározzák egy sor értékek és a memória méretét a felszabadított területre változó (fület.). Megjegyzés: a hogy az azonos típusú adatok különböző platformokon gép foglalnak különböző mennyiségű memóriát.

Memória mérete bájtban

0-tól 4294967295

memória mérete változó aláírt int típusú módosító hossza határozza meg az úgynevezett gépi kód, amely különböző méretű különböző gépeken. Így, 16-bites gépek, szó mérete 2 m-bájt, 32-bites gépek rendre 4 bájt, azaz int egyenértékű rövid int típusú. vagy long int attól függően, hogy az architektúra által használt számítógépen. Igen, méretén kívül, byte-ban is ez függ az operációs rendszert, és még a fordító. Így egy és ugyanaz a program csak akkor működik helyesen egy számítógépet, és a másik rossz. (.) Az egyetlen dolog, ami garantálja a nyelvet, hogy a rövid <= int <= long.

Nyilvánvaló, hogy mindez zavart nem okoz nagy lelkesedéssel csak örüljetek, hogy valamivel könnyebb: már vannak nyelvi szabványnak. És abban a pillanatban, amikor a teremtés óta nem volt szabványosítás méretű volt még egy nagy káosz. Annak elkerülése érdekében, az a tény, hogy mivel a különböző típusú adatok méretét a programot futtatni ugyanazon a számítógépen, és nem működnek a másik, ez alkotta különleges operátor, aki meg tudja határozni a memória által elfoglalt változó hossza: sizeof ().

Dolgozik fordításkor helyett futásidőben, ezért a fordító csak helyettesíti a megfelelő jelkép a szám- változó méretét byte a számítógépen, az operációs rendszer és a fordító. Használata egyszerű: a zárójelben, akkor adja meg a változó nevét, amelynek mérete bájtban szeretné megkapni. Tegyük fel, hogy határozza meg a változó x int típusú. Adjuk mérete bájtban nem származik a képernyőn:

int x;

2. Az adatok float típusú változókat képviselő egy lebegőpontos szám, azaz, ami tizedes tört. Az érték a float típusleíróval 4 bájt. Az érték a kettős típusú 8 byte a memóriában. Van még egy másik típusú hosszú dupla. A baj azonban az, hogy van, különböző méretű, különböző fordítóprogramok, és bizonyos, hogy nem létezik.


3. Konverziótípusok értékelésekor kifejezések

Nos, találkoztunk a adattípusok. Most meg kell vizsgálni, hogy mi történik, ha ugyanazt a műveletet érintő különböző típusú változókat.

Amikor a matematikai műveleteket végezni automatikus típusátalakítások okoz kifejezést operanduszoknak közös típus vagy meghosszabbítja rövid nagyságrendű méretének egész értékeket használt gépi utasításokat. Elvégzése az átalakítás függ az adott művelet jellege és a operandus vagy operandusok.

Tekintsük a teljes átalakulás két különböző típusú operandusok aritmetikai operátor: ebben az esetben egy kisebb alakítjuk nagyobb. Itt, a „kisebb” kifejezés azt jelenti, hogy milyen típusú a kisebb abszolút értéke a legnagyobb megengedett értéket (azaz, kevesebb lesz a hosszú, mint a float). „A leghosszabb dimenzió” adattípus határozza nem a bájtok száma elfoglalt, és a felső határérték tartomány ábrázolható. így előjel nélküli nagyobb int. és úszó - több mint hosszú.

unsigned char ch;

előjel nélküli hosszú;


Leírás Például: ha a hozzárendelési végzik az üzemeltető átváltási szabályok a következőképpen. Operandus ch alakítjuk végül előjel nélküli hosszú típus. Ugyanabban egy szabály szerint, én át előjel nélküli hosszú, és a művelet eredménye, zárójelbe lesz típus unsigned long. Úgy alakítjuk megduplázódik és az eredmény a teljes kifejezés azt írja dupla.

1.Preobrazovanie integer típusú írtak alá.
  • Előjeles egész alakítjuk, egy rövidebb előjeles egész. elvesztése információ: a száma az összes bitek, amelyek a fenti (ill - alább) határán, meghatározó maximális mérete változó.
  • Előjeles egész alakítjuk egy nagy egész egy jel. By szorzás jele. Mi ez? Minden hozzáadott bit bináris szám kerül által elfoglalt ugyanazt a számot, ami a jel bit: ha a szám pozitív, akkor ez lesz a rendre 0, ha negatív - 1.
  • Előjeles egész egy előjel nélküli egész: az első lépés egy előjeles egész átalakul egy egész szám, amelynek a jele megfelel egy célérték - azaz, az egyik, hogy vezet a - (ha a cél adattípust nagyobb). Kapok értékét a megjelölés nem dobni, de csak minden bit normálisnak tekinthető, beleértve egy mérföldkő.
  • Átalakítás előjeles egész úszó típus akkor veszteség nélkül az információ, kivéve azt az esetet az átalakítás típusát long int és unsigned long int float típusú. ha a pontosság gyakran elvesznek.

2. átalakítása integer típusú előjel nélküli.
  • Előjel nélküli egész alakítjuk, egy rövidebb egész szám előjel nélküli vagy aláírt csonkolást.
  • Előjel nélküli egész alakítjuk egy nagy egész előjel nélküli vagy aláírt hozzáadásával nullák a bal oldalon.
  • Előjel nélküli egész alakítjuk egész szám jele az azonos méretű. Ha vesszük például, unsigned short, és rövid - a tartományban 32768-65535 negatívvá válik.
  • Előjel nélküli egész alakítjuk egy úszó típusú. Először is, hogy alakul az értéke alá hosszú típus. amelyet ezután egy lebegőpontos típusú.

3. átalakítása lebegő típusok.
  • Típus értékeket alakítjuk kettős úszós megváltoztatása nélkül értékeket.
  • Értékeket alakítjuk a kettős float c némileg csökkent a pontosság, vagyis száma tizedesjegy. Ha az érték túl magas ahhoz, hogy lebegnek. az alsó elfolyó fordul elő, jelentése a futás során.
  • Amikor konvertáló egy lebegőpontos integer típusú azt először átalakítjuk a hosszú típus (a törtrész az úszó mennyiség így eldobjuk), majd a konvertált érték típusa a kívánt hosszú egész típusú. Ha az érték túl nagy a hosszú. konvertáló az eredmény határozatlan. Ez általában azt jelenti, hogy minden törmeléket megtalálható belátása szerint a fordító. A gyakorlatban az ilyen átalakításokat általában nem találkoznak.

Ezekben az esetekben az átalakítás típusát a típusú implicit jellegű, azaz végre a fordító, és olyan jelentést, hogy egy bizonyos típusú lehet csökkenteni egy ilyen ember, nem. Bár egyes fordítóprogramok mindig jelezni az implicit konverzió, ami veszteség a pontosság, vagy csonkítás. Implicit típus akkor lép fel, amikor egy hozzárendelési művelet, ha az érték az egyik típusú van rendelve egy másik típusú.

Ezen túlmenően, Xi a lehetőséget kifejezett értékek egyik típusról a másikra. Erre a célra van egy öntött működését. ami meg van írva a következő: (típus neve) operandus, ahol a típus-nevet típusát adja meg, hogy kell átalakítani operandus.


Ebben a példában, a értéke I, L, d nyilvánvalóan átalakíthatjuk a megadott típusú kerek zárójelben.

Kapcsolódó cikkek