C ++ Tutorial despre manevrarea plutelor și informațiilor

click fraud protection

Un int este un număr întreg ca 47 fără punct zecimal. Nu poți avea 4,5 bebeluși sau bucla de 32,9 ori. Puteți avea 25,76 USD dacă utilizați un float. Deci, atunci când creați programul dvs., trebuie să decideți ce tip să utilizați.

Asta fac unele limbaje de script? Deoarece este ineficient, plutitoarele preiau mai multă memorie și sunt, în general, mai lente decât int-urile. De asemenea, nu puteți compara cu ușurință două flotări pentru a vedea dacă sunt egale ca și cu int-urile.

Pentru a manipula numerele trebuie să le depozitați în memorie. Deoarece valoarea poate fi modificată cu ușurință, se numește variabilă.

compilator care îți citește programul și îl convertește în codul mașinii trebuie să știe ce tip este, adică dacă este vorba de o int sau un float, deci înainte ca programul să folosească o variabilă, trebuie să declara aceasta.

Veți observa că variabila Counter este setată pe 0. Aceasta este o inițializare opțională. Este o practică foarte bună pentru inițializarea variabilelor. Dacă nu inițializați și apoi utilizați-le în cod fără a fi setat o valoare inițială, variabila va începe cu o valoare aleatorie care vă poate „sparge” codul. Valoarea va fi orice în memorie la încărcarea programului.

instagram viewer

Care este cel mai mare număr pe care îl poate stoca un int?. Ei bine, depinde de tipul de Procesor dar este în general acceptat ca 32 biți. Deoarece poate reține aproape la fel de multe valori negative ca pozitive, intervalul de valori este +/- 2-32 la 232 sau -2147.483.648 până la +2.147.483.647.

Aceasta este pentru o intrare semnată, dar există și un nesemnat int care ține zero sau pozitiv. Are o gamă cuprinsă între 0 și 4.294.967.295. Doar aminteste-ti - int-urile nesemnate nu au nevoie de un semn (cum ar fi + sau -1) în fața lor, deoarece acestea sunt întotdeauna pozitive sau 0.

Există un tip de int mai scurt, numit coincidență int scurt care folosește 16 biți (2 octeți). Aceasta menține numerele în intervalul -32768 până la +32767. Dacă utilizați o mare cantitate de int-uri, puteți economisi memorie folosind informații scurte. Nu va fi mai rapid, în ciuda faptului că este jumătate din dimensiune. CPU de 32 biți obțin valori din memorie în blocuri de 4 octeți simultan I.E. 32 biți (de aici numele - CPU de 32 biți!). Așadar, extragerea a 16 biți necesită încă o captură de 32 biți.

Există un apel de 64 biți mai lung lung lung în C. Unii compilatori C ++, deși nu acceptă acest tip, folosesc direct un nume alternativ, de ex. atât Borland, cât și Microsoft folosesc _int64. Aceasta are o gamă de -9223372036854775807 până la 9223372036854775807 (semnată) și 0 până la 18446744073709551615 (nesemnată).

Cu excepția cazului în care efectuați programare științifică cu numere foarte mari sau mici, veți folosi doar duble pentru o mai mare precizie. Plutile sunt bune pentru 6 cifre de precizie, dar dublele oferă 15.

Luați în considerare numărul 567.8976523. Este o valoare float valabilă. Dar dacă îl imprimăm cu acest cod de mai jos, puteți observa lipsa de precizie. Numărul are 10 cifre, dar este stocat într-o variabilă float cu doar șase cifre de precizie.

Vedea Despre intrare și ieșire pentru detalii despre modul în care funcționează cout și cum se utilizează precizia. Acest exemplu stabilește precizia de ieșire la 8 cifre. Din păcate, plutitoarele pot conține doar 6, iar unii compilatori vor emite un avertisment despre convertirea unei duble în float. Când este executat, acest lucru se tipărește 567.89764

Dacă schimbați precizia la 15, se tipărește ca 567.897644042969. Destul de diferență! Acum mutați punctul zecimal doi spre stânga, astfel încât valoarea este 5.678976523 și reporniți programul. De data aceasta, produce 5.67897653579712. Acest lucru este mai precis, dar încă diferit.

Dacă schimbați tipul valorii în dublu și precizia la 10, va imprima valoarea exact așa cum a fost definită. De regulă, plutitoarele sunt la îndemână pentru numere mici, care nu sunt întregi, dar cu mai mult de 6 cifre, trebuie să utilizați duble.

Scrierea unui software informatic nu ar fi de mare folos dacă nu puteți face adaos, scădere etc. Iată exemplul 2.

La fel ca și adăugarea, puteți face scăderea, înmulțirea și divizarea. Utilizați doar + pentru adăugare, - pentru scădere, * pentru înmulțire și / pentru divizare.

Cu ajutorul plutitorilor, nu aveți niciun control asupra câte puncte zecimale sunt afișate, cu excepția cazului în care setați precizia așa cum s-a arătat anterior.

Acum, lățimea, alinierea, numărul de zecimale și semne pot fi setate de cout obiect și iomanip include funcții de fișier.

Mii de separatori sunt puțin mai complicați. Acestea sunt setate din localizarea unui computer. O regiune locală conține informații relevante pentru țara dvs., cum ar fi simboluri valutare și zecimale și mii de separatoare. În Marea Britanie și SUA, numărul 100.98 folosește un punct zecimal. ca punct zecimal, în timp ce în unele țări europene este o virgulă, 5,70 EUR înseamnă un preț de 5 Euro și 70 de centi.

creează un obiect mpunct care este o referire la a moneypunct clasa de șabloane. Aceasta are informații despre localizarea specificată - în cazul nostru, thousands_sep () metoda returnează caracterul folosit pentru separatoare de mii.

Notă Se pare că există discrepanțe între diferite compilatoare cu privire la modul în care cout.imbue se comportă. În cadrul Visual C ++ 2005 Express Edition, aceasta includea separatoare. Dar același cod cu Microsoft Visual C ++ 6.0 nu a făcut-o!

Dacă utilizați oricare dintre aceste două moduri de formatare prin intermediul cout.setf apoi precizie() stabilește numărul zecimalelor după punctul zecimal (nu numărul total de cifre), dar pierdeți formatarea miilor. De asemenea, zero zero (așa cum au fost activate de ios_base:: showpoint ) devin activate automat fără a fi nevoie showpoint.

Vă așteptați la o valoare de 11.0909090909. De fapt, valoarea este de 11. De ce asta? pentru că expresie pe partea dreaptă (cunoscut sub numele de rvalue) este întreg / întreg. Așa că folosește aritmetica întreagă care aruncă partea fracțională și atribuie 11 lui f. Schimbându-l la

În C, nu există un astfel de tip bool. Expresiile în C s-au bazat pe un zero fiind fals sau pe un zero care nu este adevărat. În C ++ tipul bool poate lua valorile Adevărat sau fals. Aceste valori sunt în continuare echivalente cu 0 și 1. Undeva în compilator va avea un

Sau cel puțin acționează așa! Cele două linii de mai jos sunt valabile fără a fi turnate, astfel încât în ​​spatele scenei, bool-urile sunt implicit convertite în ints și pot fi chiar incrementate sau decrementate, deși aceasta este o practică foarte proastă.

În cazul în care, totuși, va face dacă dacă variabila proastă este non-zero, dar este un cod rău și ar trebui evitată. Buna practică este să le folosiți așa cum sunt destinate. dacă (! v) este valabil C ++, dar îl prefer pe cel mai explicit if (v! = 0). Aceasta este însă o chestiune de gust, nu de a de facut directivă.

este mai bine ca compilatorul să surprindă erori la timp de compilare decât utilizatorul la timpul de execuție

instagram story viewer