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.
- 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.