„C ++“ mokymo apie plūdes ir įbrėžimus tvarkymas

Int yra sveikas skaičius, pvz., 47, be kablelio. Jūs negalite susilaukti 4,5 kūdikio ar kilpos 32,9 karto. Jei naudojate plūdę, galite turėti 25,76 USD. Taigi kurdami savo programą turite nuspręsti, kurį tipą naudoti.

Tai ką daro kai kurios scenarijų kalbos? Kadangi plūdės neefektyvios, jos užima daugiau atminties ir paprastai yra lėtesnės nei įvesties. Be to, jūs negalite lengvai palyginti dviejų plūdžių, norėdami pamatyti, ar jos lygios, kaip jūs galite, su intarpais.

Norėdami manipuliuoti skaičiais, turite juos išsaugoti atmintyje. Kadangi vertę galima lengvai pakeisti, ji vadinama kintamuoju.

sudarytojas kuris skaito jūsų programą ir ją konvertuoja į kompiuterio kodą, turi žinoti, koks jos tipas, t. y., ar tai vidinis, ar spartusis, todėl prieš naudodamiesi programa turite naudoti kintamąjį, turite pareikšti tai.

Pastebėsite, kad „Counter“ kintamasis yra 0. Tai yra pasirenkama inicializacija. Inicijuoti kintamuosius yra labai gera praktika. Jei neinicializuosite ir nenaudosite jų kode nenustatę pradinės vertės, kintamasis prasidės atsitiktine verte, kuri gali „sulaužyti“ jūsų kodą. Vertė bus ta, kuri buvo atmintyje įkeliant programą.

instagram viewer

Koks yra didžiausias skaičius, kurį gali laikyti int?. Na, tai priklauso nuo Centrinis procesorius tačiau jis paprastai priimamas kaip 32 bitai. Kadangi jis gali išlaikyti beveik tiek neigiamų, kiek teigiamų verčių, verčių diapazonas yra +/- 2-32 į 232 arba nuo 2 147 483 648 iki +2 147 483 647.

Tai yra pasirašytas int, bet yra ir nepasirašytas int, kuris laiko nulį arba teigiamą. Jo diapazonas yra nuo 0 iki 4 294 967 295. Tiesiog atsimink - nepasirašytų įvadų nereikia priešais ženklą (pvz., + arba -1), nes jie visada yra teigiami arba 0.

Yra trumpesnis int tipas, atsitiktinai vadinamas trumpu int, kuris naudoja 16 bitų (2 baitus). Tai apima skaičius nuo -32768 iki +32767. Jei naudojate daug colių, galbūt galite išsaugoti atmintį naudodami trumpus intarpus. Jis nebus greitesnis, nepaisant to, kad yra perpus mažesnis. 32 bitų centrinio procesoriaus reikšmės iš atminties gaunamos 4 baitų blokais vienu metu. T.y. 32 bitai (taigi pavadinimas - 32 bitų centrinis procesorius!). Taigi norint gauti 16 bitų, vis tiek reikia 32 bitų.

Yra ilgesnis 64 bitų vadinamas ilgai ilgai C. Kai kurie C ++ kompiliatoriai, nepalaikantys to tipo, tiesiogiai naudoja alternatyvų pavadinimą, pvz. tiek Borland, tiek Microsoft naudoja _int64. Tai turi diapazoną nuo -9223372036854775807 iki 9223372036854775807 (pasirašyta) ir nuo 0 iki 18446744073709551615 (nepasirašyta).

Jei darote ne mokslinį programavimą su dideliais ar mažais skaičiais, didesniam tikslumui naudosite tik dvigubus paveikslėlius. Plūdės yra geros 6 skaitmenų tikslumu, tačiau dvigubai siūlo 15.

Apsvarstykite numerį 567.8976523. Tai tinkama plūdės vertė. Bet jei mes atspausdinsime jį su šiuo kodu žemiau, galite pastebėti, kad trūksta tikslumo. Skaičius turi 10 skaitmenų, tačiau yra saugomas kintamajame, kurio tikslumas yra tik šeši.

Pamatyti Apie įvestį ir išėjimą jei reikia informacijos apie „cout“ veikimą ir kaip naudoti tikslumą. Šis pavyzdys nustato išvesties tikslumą iki 8 skaitmenų. Deja, plūduriuose gali būti tik 6, o kai kurie kompiliatoriai įspės apie dvigubos pavertimą plūduriu. Kai paleidžiama, tai atspausdinama 567.89764

Jei tikslumą pakeisite į 15, jis atspausdins kaip 567.897644042969. Gana skirtumas! Dabar perkelkite dešimtainį tašką į kairę, kad vertė būtų 5.678976523, ir paleiskite programą dar kartą. Šį kartą ji išves 5.67897653579712. Tai tiksliau, bet vis tiek skiriasi.

Jei vertės tipą pakeisite į dvigubą, o tikslumą - į 10, vertė bus atspausdinta tiksliai taip, kaip apibrėžta. Paprastai plūdės yra patogios naudoti mažus, ne sveikus skaičius, bet turinčius daugiau nei 6 skaitmenų, turite naudoti dvigubus ženklus.

Kompiuterių programinės įrangos rašymas nebūtų daug naudingas, jei negalėtumėte sudėti, atimti ir pan. Štai 2 pavyzdys.

Taip pat galite sudėti, atimti, dauginti ir dalinti. Tiesiog naudokite +, jei norite sudėti, - atimti, * padauginti ir (padalyti).

Naudodami plūdes, jūs negalite valdyti, kiek dešimtainių taškų rodoma, nebent nustatytumėte tikslumą, kaip parodyta anksčiau.

Dabar plotį, išlyginimą, dešimtųjų skaičių ir ženklų skaičių galima nustatyti cout objektas ir iomanipas įtraukti failų funkcijas.

Tūkstančiai separatorių yra šiek tiek sudėtingesni. Jie nustatomi atsižvelgiant į asmeninio kompiuterio lokalę. Lokalėje yra jūsų šaliai svarbios informacijos, tokios kaip valiutos simboliai ir dešimtainis taškas bei tūkstančiai skyriklių. JK ir JAV skaičius 100,98 naudojamas po kablelio. kaip dešimtainis taškas, o kai kuriose Europos šalyse kablelis, taigi 5,70 EUR reiškia 5 eurų ir 70 centų kainą.

sukuria objektą mpunktas kuri yra nuoroda į a piniginis taškas šablono klasė. Čia yra informacijos apie nurodytą lokalę - mūsų atveju tūkstančiai sekundžių () metodas grąžina tūkstančiams skirtuvui naudojamą simbolį.

Pastaba Atrodo, kad skirtingi kompiliatoriai skiriasi cout.imbue elgiasi. „Visual C ++ 2005 Express“ leidime buvo atskyrėjų. Bet to paties kodo su „Microsoft Visual C ++ 6.0“ nebuvo!

Jei naudojate kurį nors iš šių dviejų formatavimo režimų per cout.setf tada tikslumas () nustato dešimtųjų skaičių po kablelio skaičių (o ne bendrą skaitmenų skaičių), bet jūs prarasite tūkstančius formatų. Taip pat ir nulinės vertės (kaip jas įjungė ios_base:: parodomasis taškas ) automatiškai įgalinama be reikalo parodomasis taškas.

Galite tikėtis kažko panašaus į 11.0909090909 vertę. Iš tikrųjų vertė yra 11. Kodėl tai? nes išraiška dešinėje pusėje (žinomas kaip rvalue) yra sveikasis / sveikasis skaičius. Taigi naudojama sveikojo skaičiaus aritmetika, kuri išmeta trupmeninę dalį ir priskiria 11 prie f. Pakeitus jį į

C kategorijoje tokio tipo kaip a nėra bukas. C išraiškos buvo pagrįstos tuo, kad nulis yra klaidinga arba nulis yra teisinga. C ++ tipo bukas gali perimti vertybes tiesa arba melagingas. Šios vertės vis tiek lygios 0 ir 1. Kai kur kompiliatoriuje bus

Arba bent jau taip elgiasi! Dvi žemiau pateiktos eilutės galioja neperduodant, todėl užkulisiuose švilpukai netiesiogiai paverčiami intarpais ir netgi gali būti padidinti ar sumažinti, nors tai labai bloga praktika.

Jei vis tiek bus padaryta if, nes blogasis kintamasis nėra lygus nuliui, tačiau tai yra blogas kodas ir to reikėtų vengti. Gera praktika yra naudoti juos taip, kaip jie yra skirti. jei (! v) galioja C ++, bet aš norėčiau aiškiau if (v! = 0). Tačiau tai yra ne skonio, o skonio reikalas privalu padaryti direktyva.

kompiliatoriui geriau užfiksuoti klaidas kompiliavimo metu nei vartotojui vykdant