C ++ výuka o zacházení s plaváky a Ints

click fraud protection

Int je celé číslo jako 47 bez desetinné tečky. Nemůžete mít 4,5 dětí nebo smyčku 32,9krát. Pokud používáte float, můžete mít 25,76 $. Takže při vytváření programu se musíte rozhodnout, jaký typ použijete.

To je to, co některé skriptovací jazyky dělají? Protože je to neefektivní, plováky zabírají více paměti a jsou obvykle pomalejší než ints. Také nemůžete snadno porovnat dva plováky, abyste zjistili, zda jsou stejné jako u ints.

Chcete-li manipulovat s čísly, musíte je uložit do paměti. Protože hodnotu lze snadno změnit, nazývá se proměnná.

překladač který čte váš program a převádí jej na strojový kód, musí vědět, jaký je to typ, tj. zda je to int nebo float, takže než program použije proměnnou, musíte prohlásit to.

Všimněte si, že proměnná Counter je nastavena na 0. Toto je volitelná inicializace. Inicializovat proměnné je velmi dobré. Pokud neinicializujete a poté je použijete v kódu, aniž byste nastavili počáteční hodnotu, proměnná začne náhodnou hodnotou, která může váš kód „zlomit“. Hodnota bude cokoli, co bylo v paměti při načtení programu.

instagram viewer

Jaké je největší číslo, které může int uložit?. Záleží to na typu procesor ale je obecně přijímán jako 32 bitů. Protože to může držet téměř tolik záporných hodnot jako pozitivní, rozsah hodnot je +/- 2-32 na 232 nebo -2147,483,648 na +2,147,483,647.

To je pro podepsanou int, ale existuje také nepodepsaný int, který má nulovou nebo kladnou hodnotu. Má rozmezí 0 až 4 294 967 295. Jen si pamatuj - nepodepsaní ints nepotřebují před sebou znak (jako + nebo -1), protože jsou vždy kladní nebo 0.

Existuje kratší int typ, shodou okolností nazývaný short int, který používá 16 bitů (2 bajty). To drží čísla v rozsahu -32768 až +32767. Pokud používáte velké množství ints, můžete ušetřit paměť pomocí krátkých ints. Nebude to rychlejší, přestože je poloviční. 32bitové procesory načítají hodnoty z paměti v blocích po 4 bajtech najednou. Tj. 32 bitů (odtud název 32 bit CPU!). Vyvolání 16 bitů tedy stále vyžaduje 32bitové načtení.

Volá se delší 64 bit dlouho dlouho v C. Některé kompilátory C ++, zatímco nepodporují tento typ, přímo používají alternativní název - např. používají Borland i Microsoft _int64. To má rozmezí -9223372036854775807 až 9223372036854775807 (podepsáno) a 0 až 18446744073709551615 (nepodepsáno).

Pokud neděláte vědecké programování s velmi velkými nebo malými čísly, budete používat pouze čtyřhra pro větší přesnost. Plováky jsou dobré pro 6 číslic přesnosti, ale zdvojnásobit 15.

Vezměme si číslo 567,8976523. Je to platná hodnota float. Ale pokud to vytiskneme s tímto kódem níže, můžete vidět nedostatek přesnosti. Číslo má 10 číslic, ale je uloženo v plovoucí proměnné s přesností na šest číslic.

Vidět O vstupu a výstupu podrobnosti o tom, jak cout funguje a jak používat přesnost. Tento příklad nastavuje přesnost výstupu na 8 číslic. Bohužel plováky pojmou pouze 6 a někteří kompilátoři budou varovat před přeměnou dvojice na plovák. Při spuštění se vytiskne 567.89764

Pokud změníte přesnost na 15, vytiskne se jako 567,897644042969. Docela rozdíl! Nyní přesuňte desetinnou čárku dvě doleva, takže hodnota je 5,678976523 a znovu spusťte program. Tentokrát je na výstupu 5,67897653579712. To je přesnější, ale stále jiné.

Pokud změníte typ hodnoty na dvojnásobek a přesnost na 10, vytiskne hodnotu přesně podle definice. Obecně platí, že plováky jsou vhodné pro malá, nečíselná čísla, ale s více než 6 číslicemi musíte použít dvojnásobek.

Psaní počítačového softwaru by nebylo moc užitečné, pokud byste nemohli dělat sčítání, odčítání atd. Zde je příklad 2.

Kromě sčítání můžete také odčítat, násobit a dělit. Stačí použít + pro sčítání, - pro odčítání, * pro násobení a / pro dělení.

U plováků nemáte žádnou kontrolu nad počtem desetinných míst, pokud nenastavíte přesnost tak, jak je uvedeno výše.

Nyní lze nastavit šířku, zarovnání, počet desetinných míst a znaků cout objekt a iomanip zahrnují funkce souboru.

Tisíce oddělovačů jsou o něco složitější. Jsou nastaveny z národního prostředí počítače. Národní prostředí obsahuje informace relevantní pro vaši zemi - například měnové symboly a desetinná tečka a oddělovače tisíců. Ve Velké Británii a USA používá číslo 100,98 desetinnou čárku. jako desetinná tečka, zatímco v některých evropských zemích je to čárka, takže 5,70 EUR znamená cenu 5 EUR a 70 centů.

vytvoří objekt mpunct což je odkaz na a drobná funkce třída šablony. Toto obsahuje informace o zadaném místním prostředí - v našem případě tisíce_sep () metoda vrací znak použitý pro oddělovače tisíců.

Poznámka Jak se zdá, existují rozdíly mezi různými kompilátory cout.imbue chová se. V rámci Visual C ++ 2005 Express Edition to zahrnovalo oddělovače. Ale stejný kód jako Microsoft Visual C ++ 6.0 ne!

Pokud používáte některý z těchto dvou režimů formátování pomocí cout.setf pak přesnost() nastavuje počet desetinných míst za desetinnou čárkou (nikoli celkový počet číslic), ale ztratíte formátování tisíců. Také koncové nuly (jak povolil ios_base:: showpoint ) se automaticky povolí bez nutnosti showpoint.

Očekávali byste něco jako hodnota 11,0909090909. Ve skutečnosti je hodnota 11. Proč je to? protože výraz na pravé straně (známé jako rvalue) je celé číslo. Používá tedy celočíselnou aritmetiku, která zahodí zlomkovou část a přiřadí 11 až f. Změna na

V C neexistuje žádný takový typ jako bool. Výrazy v C byly založeny na tom, že nula je nepravda nebo nenulová pravda. V C ++ typ bool může vzít hodnoty skutečný nebo Nepravdivé. Tyto hodnoty jsou stále ekvivalentní 0 a 1. Někde v kompilátoru bude mít

Nebo alespoň jedná takto! Dva řádky níže jsou platné bez sesílání, takže v zákulisí jsou bools implicitně převedeny na ints a lze je dokonce zvýšit nebo snížit, i když je to velmi špatná praxe.

If bude stále dělat, když je špatná proměnná nenulová, ale je to špatný kód a je třeba se mu vyhnout. Dobrou praxí je používat je tak, jak je zamýšleno. pokud (! v) je platný C ++, ale preferuji více explicitní pokud (v! = 0). To je však věcí vkusu, nikoliv muset udělat směrnice.

je lepší, když kompilátor zachytí chyby při kompilaci než uživatel za běhu

instagram story viewer