C ++ oktatóanyag az úszók és az intok kezeléséről

Az int egész szám, például 47, tizedespont nélkül. Nem lehet 4,5 csecsemő vagy 32,9-szer hurok. Ha úszót használsz, 25,76 dollárt kaphatsz. Tehát a program létrehozásakor el kell döntenie, hogy melyik típust használja.

Ezt teszik néhány szkriptnyelv? Mivel ez nem hatékony, az úszók több memóriát igényelnek, és általában lassabbak, mint az intek. Ezenkívül nem könnyedén összehasonlítani a két úszót, hogy megnézze, egyenlőek-e, mint te az intek.

A számok kezeléséhez azokat a memóriában kell tárolnia. Mivel az érték könnyen megváltoztatható, változónak nevezik.

Az fordítóprogram amely elolvassa a programot, és gépi kódmá alakítja azt, tudnia kell, hogy milyen típusú, azaz hogy egy int vagy egy úszó, tehát mielőtt a program egy változót használ, meg kell kijelent azt.

Észre fogja venni, hogy a Számláló változó értéke 0. Ez egy opcionális inicializálás. Nagyon jó gyakorlat a változók inicializálása. Ha nem inicializálja, majd a kódban használja őket anélkül, hogy beállított volna egy kezdeti értéket, akkor a változó véletlenszerű értékkel kezdődik, amely „megtörheti” a kódot. Az érték bármilyen, ami a memória tárolásakor volt a program betöltésekor.

instagram viewer

Mi a legnagyobb szám, amelyet egy int tárolhat?. Nos, ez attól függ processzor de általában 32 bitnek tekintik. Mivel szinte annyi negatív értéket képes tárolni, mint a pozitív, az értékek tartománya +/- 2-32 2-ig32 vagy -2,147,483,648 - +2,147,483,647.

Ez egy aláírt int számára, de van egy aláírás nélküli int, amely nulla vagy pozitív. 0 és 4 294 967 295 közötti tartományban van. Csak ne feledd - az alá nem írt beütéseknek nincs szükségük jelre (pl. + vagy -1) elõttük, mert mindig pozitívak vagy 0.

Van egy rövidebb int típus, amelyet véletlenszerűen rövid int-nek nevezünk, amely 16 bitet (2 bájt) használ. Ez a szám -32768 és +32767 közötti tartományban van. Ha nagyszámú bemeneti inget használ, akkor memóriamegtakarításra kerülhet rövid bevezető betűkkel. Nem lesz gyorsabb, annak ellenére, hogy fele fele. A 32 bites CPU-k az adatokat a memóriából vonják le, egyszerre 4 bájtos blokkokban. Azaz. 32 bit (tehát a név - 32 bites CPU!). Tehát a 16 bit beolvasása továbbra is 32 bites letöltést igényel.

Van egy hosszabb 64 bites, úgynevezett hosszú, hosszú C. Néhány C ++ fordító, miközben nem támogatja ezt a típust, alternatív nevet használ, pl. mind a Borland, mind a Microsoft használja _int64. Ennek tartománya -9223372036854775807 - 9223372036854775807 (aláírva) és 0 - 18446744073709551615 (aláírás nélkül).

Hacsak nem tudományos programozást végez nagyon nagy vagy kis számokkal, akkor csak a párosokat használja a nagyobb pontosság érdekében. Az úszók jó 6 számjegyű pontossággal, de páros 15-ös.

Vegye figyelembe az 567.8976523 számot. Érvényes úszóérték. De ha az alábbi kóddal kinyomtatjuk, láthatja, hogy a pontosság hiányzik. A szám 10 számjegyből áll, de egy úszó változóban tárolja, csak hat számjegyű pontossággal.

Lát A bemenetről és a kimenetről a cout működéséről és a pontosság használatáról. Ez a példa a kimeneti pontosságot 8 számjegyre állítja. Sajnos az úszók csak 6-ot tudnak tartani, és néhány fordító figyelmeztetést fog kiadni a dupla átalakításáért. Amikor fut, ez kinyomtatódik 567.89764

Ha a pontosságot 15-re változtatja, az 567.897644042969 számú lesz. Elég különbség! Most mozgassa a két tizedes pontot balra, így az érték 5.678976523, és indítsa újra a programot. Ezúttal az 5.67897653579712 kimenetet jeleníti meg. Ez pontosabb, de még mindig más.

Ha megváltoztatja az érték típusát duplájára, és a pontosságot 10-re, akkor pontosan a megadott értéket nyomtatja ki. Általános szabály, hogy az úszók jól használhatók kicsi, nem egész számok esetén, de 6-nál több számjegy esetén párosokat kell használni.

A számítógépes szoftverek írása nem lenne sok hasznos, ha nem tudnánk összeadni, kivonni stb. Íme a 2. példa.

Az összeadás mellett kivonás, szorzás és osztás is elvégezhető. Csak használja a + -ot az összeadáshoz, - a kivonáshoz, * a szorzáshoz és / osztáshoz.

Az úszókkal nem szabályozhatja, hány tizedes pont jelenik meg, hacsak nem állítja be a pontosságot a korábbiak szerint.

Most a szélességet, az igazítást, a tizedesjegyek számát és a jeleket a gombbal lehet beállítani cout tárgy és iomanip tartalmazzák a fájlfunkciókat.

Ezer elválasztó egy kicsit bonyolultabb. Ezeket a személyi számítógép helyétől lehet beállítani. A területi adatok az Ön országára vonatkozó információkat tartalmaznak, például a pénznem szimbólumait és a tizedes pontot, valamint az ezrek elválasztóit. Az Egyesült Királyságban és az Egyesült Államokban a 100,98 szám tizedes pontot használ. tizedes pontként, míg néhány európai országban vessző van, tehát az 5,70 euró 5 euró és 70 cent árát jelenti.

objektumot hoz létre mpunct ami egy hivatkozás a moneypunct sablon osztály. Információ van a megadott helyről - a mi esetünkben a thousands_sep () A metódus visszatér az ezer elválasztóhoz használt karakterhez.

jegyzet Úgy tűnik, hogy különbségek vannak a különböző fordítók között abban, hogy hogyan cout.imbue viselkedik. A Visual C ++ 2005 Express Edition alatt ez elválasztókat tartalmazott. De ugyanaz a kód a Microsoft Visual C ++ 6.0-tal nem!

Ha a két formázási mód egyikét használja a cout.setf azután pontosság() Beállítja a tizedes pontok számát a tizedes pont után (nem az összes számjegyet), de elveszíti az ezer formázást. A zéró záró értékek is (ahogy a ios_base:: showpoint ) automatikusan engedélyezve lesz anélkül, hogy szükség lenne rá showpoint.

Azt várná, hogy valami hasonló legyen: 11.0909090909. Valójában az érték 11. Miért ez? mert a kifejezés a jobb oldalon ( rvalue) egész / egész. Tehát egész számtani értéket használ, amely eldobja a tört részét és 11-t f-hez rendelt. Cserélje le

C-ben nincs olyan típus, mint a bool. A C-ben kifejezett értékek nulla hamis vagy nullán kívüli valóságon alapulnak. C ++ esetén a típus bool el tudja venni az értékeket igaz vagy hamis. Ezek az értékek továbbra is 0 és 1 értékkel egyenértékűek. Valahol a fordítóban lesz a

Vagy legalábbis így viselkedik! Az alábbi két sor érvényes leadás nélkül, így a színfalak mögött a boolokat implicit módon átalakítják intekké, és akár növelni, akár csökkentni lehet, bár ez nagyon rossz gyakorlat.

A if továbbra is végrehajtja a if értéket, mivel a rossz változó nem nulla, de rossz kód, ezért kerülendő. Helyes gyakorlat az, ha rendeltetésszerűen használja őket. ha (! v) érvényes C ++, de jobban szeretem a kifejezettebbet if (v! = 0). Ez azonban ízlés kérdése, nem pedig egy meg kell tenni irányelv.

jobb, ha a fordító hibákat észlel a fordítási időben, mint a felhasználó futási időben

instagram story viewer