Vodič za C ++ o rukovanju plovcima i lentama

Int je cijeli broj poput 47 bez decimalne točke. Ne možete imati 4,5 bebe ili petlje 32,9 puta. Možete imati 25,76 dolara ako koristite float. Stoga, kada kreirate svoj program, morate odlučiti koju vrstu koristiti.

To rade neki skriptni jezici? Budući da je neučinkovit, plutaju zauzimaju više memorije i obično su sporiji od inta. Također, ne možete lako usporediti dva plovka da biste vidjeli jesu li jednaki kao i vi s ulozima.

Za manipuliranje brojevima morate ih pohraniti u memoriju. Budući da se vrijednost može lako promijeniti, naziva se varijablom.

kompajler koji čita vaš program i pretvara ga u strojni kod, mora znati o kojem se tipu radi, tj. je li int ili float, pa prije nego što vaš program koristi varijablu, morate proglasiti to.

Primijetit ćete da je varijabla brojača postavljena na 0. Ovo je neobavezna inicijalizacija. Vrlo dobra praksa je inicijalizirati varijable. Ako ih ne inicijalizirate, a zatim ih koristite u kodu, bez da postavite početnu vrijednost, varijabla će početi sa slučajnom vrijednošću koja može 'razbiti' vaš kôd. Vrijednost će biti ono što je bilo u sjećanju kad se učitao program.

instagram viewer

Koji je najveći broj koji jedan int može pohraniti?. Pa, to ovisi o vrsti CPU ali općenito je prihvaćeno kao 32 bita. Budući da može sadržati gotovo isto toliko negativnih, pozitivnih, raspon vrijednosti je +/- 2-32 do 232 ili -2,147,483,648 do +2,147,483,647.

Ovo je za potpisan int, ali postoji i nepotpisan int koji drži nulu ili pozitivnu. Raspon se kreće od 0 do 4,294,967,295. Samo zapamti - nenapisani unosi ne trebaju znak (poput + ili -1) ispred njih jer su uvijek pozitivni ili 0.

Postoji kraći int tip, slučajno nazvan kratki int koji koristi 16 bita (2 bajta). Ovo drži brojeve u rasponu od -32768 do +32767. Ako koristite veliku količinu unosa, memorijom možete sačuvati kratke inte. Neće biti brže, unatoč tome što je upola manji. 32-bitni CPU-i dohvaćaju vrijednosti iz memorije u blokovima od po 4 bajta. Tj 32 bita (odatle i naziv - 32-bitni CPU!). Dakle, dohvaćanje 16 bita još uvijek zahtijeva dohvaćanje od 32 bita.

Postoji duži 64 bitni nazvani dugo dugo u C. Neki C ++ prevoditelji iako ne podržavaju tu vrstu, izravno koriste alternativno ime - npr. i Borland i Microsoft koriste _int64. To ima raspon od -9223372036854775807 do 9223372036854775807 (potpisano) i od 0 do 18446744073709551615 (nepotpisano).

Ako ne radite znanstveno programiranje s vrlo velikim ili malim brojevima, upotrijebit ćete samo parove za veću preciznost. Plodovi su dobri za 6 znamenki točnosti, ali parovi nude 15.

Razmotrite broj 567.8976523. To je valjana float vrijednost. Ali ako ga ispisujemo s ovim kodom dolje, vidjet ćete nedostatak preciznosti. Broj ima 10 znamenki, ali pohranjuje se u varijantu s pomičnim stupnjem sa samo šest znamenki.

Vidjeti O ulazu i izlazu za detalje o tome kako cout radi i kako koristiti preciznost. Ovaj primjer postavlja preciznost izlaza na 8 znamenki. Nažalost, floats može sadržavati samo 6, a neki prevoditelji će upozoriti o pretvaranju dvostrukog u float. Kada se pokrene, ovo otiskuje 567.89764

Ako preciznost promijenite u 15, ispisat će se kao 567.897644042969. Sasvim razlika! Sada pomaknite decimalnu točku dvije ulijevo, tako da vrijednost iznosi 5.678976523 i ponovno pokrenite program. Ovaj put izlazi 5.67897653579712. To je preciznije, ali i dalje drugačije.

Ako vrstu vrijednosti promijenite u dvostruku, a preciznost u 10, ispisat će se vrijednost točno onako kako je definirano. Općenito je pravilo da su plovci zgodni za male, nebrojne brojeve, ali s više od 6 znamenki, morate koristiti parove.

Pisanje računalnog softvera ne bi znalo mnogo koristiti ako ne biste mogli napraviti zbrajanje, oduzimanje itd. Evo primjera 2.

Kao i zbrajanje, možete raditi oduzimanje, množenje i dijeljenje. Samo koristite + za zbrajanje, - za oduzimanje, * za množenje i / za dijeljenje.

S plutačima nemate kontrolu nad time koliko je decimalnih točaka prikazano, osim ako ne postavite preciznost kao što je prethodno prikazano.

Sada se širina, poravnanje, broj decimalnih mjesta i znakova mogu postaviti cout objekt i iomanip uključuju funkcije datoteka.

Tisuće separatora su malo složenije. Postavljaju se s lokalnog računala. Lokalni lokal sadrži informacije relevantne za vašu zemlju, poput simbola valute i decimalnih mjesta te tisuća razdvajača. U Velikoj Britaniji i SAD-u broj 100,98 koristi decimalnu točku. kao decimalna točka, dok u nekim europskim državama zarez, tako 5,70 eura znači cijenu od 5 eura i 70 centi.

stvara objekt mpunct što je referenca na a moneypunct klasa predloška. Tu su podaci o specificiranom lokalu - u našem slučaju the thousands_sep () vraća znak koji se koristi za razdvajanje tisuća.

Bilješka Čini se da postoje razlike između različitih prevoditelja u tome kako cout.imbue ponaša. Pod Visual C ++ 2005 Express Edition, ovo uključuje razdvajače. Ali isti kod s Microsoft Visual C ++ 6.0 nije!

Ako koristite bilo koji od ova dva načina formatiranja putem cout.setf zatim preciznost() postavlja broj decimalnih mjesta nakon decimalne točke (ne ukupni broj znamenki), ali gubite u tisućama oblikovanja. Također zadnja nula (kao što je omogućeno u ios_base:: showpoint ) postaju automatski omogućene bez potrebe showpoint.

Očekivali biste nešto poput vrijednosti 11.0909090909. Zapravo, vrijednost je 11. Zašto je ovo? jer izraz s desne strane (poznat kao an rvalue) je cijeli broj / cijeli broj. Tako koristi aritmetiku cijelog broja koja izbacuje frakcijski dio i dodjeljuje 11 f. Promjena u

U C ne postoji takva vrsta kao a bool. Izrazi u C temelje se na tome da je nula lažna ili da je nula istina. U C ++ vrsti bool može uzeti vrijednosti pravi ili lažan. Te su vrijednosti i dalje jednake 0 i 1. Negdje u prevoditelju će imati a

Ili barem tako djeluje! Dva retka ispod vrijede bez lijevanja, tako da se iza scene, boovi implicitno pretvaraju u inte i mogu se čak povećati ili smanjivati ​​iako je to vrlo loša praksa.

Ako će i dalje činiti if kao loša varijabla nije jednaka nuli, ali to je loši kod i trebalo bi je izbjegavati. Dobra praksa je da ih koristite onako kako su namijenjeni. ako (! v) vrijedi C ++, ali više volim eksplicitnije ako je (v! = 0). To je, međutim, stvar ukusa, a ne mora-do direktiva.

bolje je za prevodilac da hvata pogreške u vremenu kompilacije nego korisnik za vrijeme izvršavanja