C ++ apmācība par pludiņu un intu apstrādi

Int ir vesels skaitlis, piemēram, 47, bez komata. Jums nevar būt 4,5 mazuļi vai cilpa 32,9 reizes. Ja izmantojat pludiņu, jums var būt USD 25,76. Tāpēc, veidojot programmu, jums jāizlemj, kuru veidu izmantot.

To dara dažas skriptu valodas? Tā kā pludiņi ir neefektīvi, tie aizņem vairāk atmiņas un parasti ir lēnāki nekā ints. Arī divus pludiņus nevar viegli salīdzināt, lai redzētu, vai tie ir vienādi, kā jūs varat ar ints.

Lai manipulētu ar numuriem, tie ir jāuzglabā atmiņā. Tā kā vērtību var viegli mainīt, to sauc par mainīgo.

sastādītājs, kas nolasa jūsu programmu un pārvērš to mašīna kodā, ir jāzina, kāda veida tā ir, t.i., vai tā ir int vai pludiņa, tāpēc pirms jūsu programma izmanto mainīgo, jums ir paziņo tā.

Jūs pamanīsit, ka mainīgais Skaitītājs ir iestatīts uz 0. Šī ir izvēles inicializēšana. Mainīgo inicializēšana ir ļoti laba prakse. Ja jūs neinicializējat un pēc tam neizmantojat tos kodā, nenosakot sākotnējo vērtību, mainīgais sāksies ar nejaušu vērtību, kas var “salauzt” jūsu kodu. Vērtība būs tā, kas atmiņā bija programmas ielādes laikā.

instagram viewer

Kāds ir lielākais skaits int, ko var uzglabāt?. Nu, tas ir atkarīgs no Procesors bet to parasti pieņem kā 32 bitus. Tā kā tajā var būt gandrīz tikpat daudz negatīvu vērtību kā pozitīvā, vērtību diapazons ir +/- 2-32 līdz 232 vai –2,147,483,648 līdz +2,147,483,647.

Tas attiecas uz parakstītu int, bet ir arī neparakstīts int, kam ir nulle vai pozitīvs. Tā diapazons ir no 0 līdz 4 294 967 295. Tikai atceries - neparakstītiem iespiedumiem priekšā nav nepieciešama zīme (piemēram, + vai -1), jo tie vienmēr ir pozitīvi vai 0.

Ir īsāks int tips, ko nejauši sauc par īsu int, kas izmanto 16 bitus (2 baitus). Tas satur numurus diapazonā no -32768 līdz +32767. Ja izmantojat lielu skaitu collu, iespējams, varat ietaupīt atmiņu, izmantojot īsās intes. Tas nenotiks ātrāk, neskatoties uz to, ka tas ir uz pusi mazāks. 32 bitu centrālie procesori no atmiņas iegūst vērtības 4 baitu blokos vienlaikus. T. i. 32 biti (tātad nosaukums - 32 bitu centrālais procesors!). Tātad 16 bitu ienešanai joprojām ir nepieciešama 32 bitu ienešana.

Ir garāks 64 bitu nosaukums ilgi ilgi C. Daži C ++ kompilatori, neatbalstot šo tipu, tieši izmanto alternatīvu vārdu, piemēram, izmanto gan Borland, gan Microsoft _int64. Tam ir diapazons no -9223372036854775807 līdz 9223372036854775807 (parakstīts) un 0 līdz 18446744073709551615 (neparakstīts).

Ja vien jūs neveicat zinātnisku programmēšanu ar ļoti lieliem vai maziem skaitļiem, lielākai precizitātei jūs izmantosit tikai dubultā. Pludiņi ir labi ar 6 ciparu precizitāti, bet dubultā piedāvā 15.

Apsveriet numuru 567.8976523. Tā ir derīga mainīgā vērtība. Bet, ja mēs to izdrukāsim ar zemāk redzamo kodu, jūs varat redzēt neprecizitātes trūkumu. Skaitlim ir 10 cipari, bet tas tiek saglabāts mainīgā lielumā ar tikai sešiem cipariem ar precizitāti.

Skat Par ieeju un izvadi lai iegūtu sīkāku informāciju par to, kā cout darbojas un kā izmantot precizitāti. Šajā piemērā izvades precizitāte ir iestatīta uz 8 cipariem. Diemžēl pludiņos var ietilpt tikai 6, un daži kompilatori izdos brīdinājumu par divkāršās konvertēšanu pludiņā. Kad tas tiek palaists, tas tiek izdrukāts 567.89764

Ja maināt precizitāti uz 15, tas tiek izdrukāts kā 567.897644042969. Diezgan atšķirība! Tagad pārvietojiet decimālo komatu divus pa kreisi, lai vērtība būtu 5.678976523, un palaidiet programmu. Šoreiz tas iznāk 5.67897653579712. Tas ir precīzāks, bet tomēr atšķirīgs.

Ja mainīsit vērtības veidu uz divkāršu un precizitāti līdz 10, tā vērtību izdrukās precīzi, kā noteikts. Parasti pludiņi ir parocīgi maziem skaitļiem, kas nav veseli skaitļi, bet ar vairāk nekā 6 cipariem ir jāizmanto dubultā.

Datorprogrammatūras rakstīšana nebūtu daudz noderīga, ja nevarētu izdarīt saskaitīšanu, atņemšanu utt. Šeit ir 2. piemērs.

Papildus saskaitīšanai var veikt arī atņemšanu, reizināšanu un dalīšanu. Vienkārši izmantojiet + saskaitīšanai, - atņemšanai, * reizināšanai un / dalīšanai.

Izmantojot pludiņus, jūs nevarat kontrolēt, cik komatu tiek parādīti, ja vien jūs neesat iestatījis precizitāti, kā parādīts iepriekš.

Tagad platumu, izlīdzināšanu, decimālo zīmju skaitu un zīmes var iestatīt ar cout objekts un iomanip iekļaujiet failu funkcijas.

Tūkstošiem atdalītāju ir nedaudz sarežģītāki. Tie ir iestatīti no datora lokalizācijas. Lokalizācija satur informāciju, kas attiecas uz jūsu valsti, piemēram, valūtas simbolus un decimāldaļu, kā arī tūkstošiem atdalītāju. Apvienotajā Karalistē un ASV skaitlis 100,98 izmanto decimālo komatu. kā komats, bet dažās Eiropas valstīs tas ir komats, tāpēc 5,70 euro nozīmē cenu 5 eiro un 70 centus.

izveido objektu mpunkts kas ir atsauce uz a naudas sods veidņu klase. Tam ir informācija par norādīto lokalizāciju - mūsu gadījumā tūkstoši sekunžu () metode atgriež tūkstošiem atdalītājam izmantoto rakstzīmi.

Piezīme Šķiet, ka starp dažādiem apkopotājiem ir atšķirības, kā cout.imbue uzvedas. Visual C ++ 2005 Express Edition tas ietvēra atdalītājus. Bet tas pats kods ar Microsoft Visual C ++ 6.0 nebija!

Ja, izmantojot, izmantojat kādu no šiem diviem formatēšanas režīmiem cout.setf tad precizitāte () iestata decimālo zīmju skaitu aiz komata (nevis kopējo ciparu skaitu), bet jūs zaudējat formatējumu tūkstošiem. Arī nulles beigu rādītājs (kā ļāva ios_base:: demonstrācijas punkts ) automātiski iespējot bez vajadzības rādīšanas punkts.

Jūs varētu gaidīt kaut ko līdzīgu 11.0909090909 vērtībai. Faktiski vērtība ir 11. Kāpēc ir šis? tāpēc ka izteiksme labajā pusē (pazīstams kā rvalue) ir vesels skaitlis / vesels skaitlis. Tātad tas izmanto vesela skaitļa aritmētiku, kas izmet frakcionēto daļu un piešķir 11 līdz f. Mainot to uz

C klasē nav tāda tipa kā a bols. Izteicieni C bija balstīti uz to, ka nulle ir nepatiesa vai nulle, kas ir patiesa. C ++ tipa bols prot ņemt vērtības taisnība vai viltus. Šīs vērtības joprojām ir vienādas ar 0 un 1. Kaut kur kompilatorā tam būs a

Vai vismaz tā rīkojas šādi! Divas zemāk redzamās līnijas ir derīgas bez apraides, tāpēc aizkulisēs rullīši tiek netieši pārveidoti par ints un pat var tikt palielināti vai samazināti, lai gan tā ir ļoti slikta prakse.

If joprojām veiks if, jo sliktais mainīgais nav nulle, bet tas ir slikts kods, un no tā vajadzētu izvairīties. Laba prakse ir tos izmantot, kā paredzēts. ja (! v) ir derīga C ++, bet es dodu priekšroku skaidrākai ja (v! = 0). Tas tomēr ir gaumes jautājums, nevis jautājums jādara direktīva.

kompilatoram ir labāk uztvert kļūdas kompilēšanas laikā nekā lietotājam izpildlaika laikā

instagram story viewer