C ++ -ohjeet kelluvien ja sisäänsyöttölaitteiden käsittelemiseksi

Int on kokonaisluku, kuten 47, ilman desimaalia. Sinulla ei voi olla 4,5 vauvaa tai silmukka 32,9 kertaa. Voit käyttää 25,76 dollaria, jos käytät kelluvaa. Joten kun luot ohjelmaa, sinun on päätettävä, mitä tyyppiä käytetään.

Tätä jotkut komentosarjojen kielet tekevät? Koska kelluimet eivät ole tehokkaita, ne vievät enemmän muistia ja ovat yleensä hitaampia kuin inetit. Et voi myöskään helposti verrata kahta kelluvaa nähdäksesi, ovatko ne yhtä suuret kuin pystyt intien kanssa.

Numeroiden käsittelemiseksi sinun on tallennettava ne muistiin. Koska arvoa voidaan helposti muuttaa, sitä kutsutaan muuttujaksi.

kääntäjä joka lukee ohjelman ja muuntaa sen konekoodiksi, sen on tiedettävä, minkä tyyppinen se on, ts. onko se int tai kelluva, joten ennen kuin ohjelma käyttää muuttujaa, sinun on julistaa se.

Huomaat, että Laskurimuuttuja on asetettu arvoon 0. Tämä on valinnainen alustus. Se on erittäin hyvä käytäntö muuttujien alustamiseen. Jos et alusta tai käytä niitä koodissa määrittämättä alkuperäistä arvoa, muuttuja alkaa satunnaisarvolla, joka voi "rikkoa" koodisi. Arvo on mikä tahansa, joka oli muistissa ohjelman lataamisen aikana.

instagram viewer

Mikä on suurin määrä int voi tallentaa?. No, se riippuu prosessori mutta se hyväksytään yleensä 32 bitiksi. Koska siinä voi olla melkein yhtä monta negatiivista arvoa kuin positiivista, arvoalue on +/- 2-32 2: een32 tai -2,147,483,648 - +2,147,483,647.

Tämä on allekirjoitetulle int, mutta on myös allekirjoittamaton int, joka pitää nollan tai positiivisena. Sen alue on välillä 0 - 4 294 967 295. Muista vain - allekirjoittamattomat sisääntulot eivät tarvitse merkkiä (kuten + tai -1) edessä, koska ne ovat aina positiivisia tai 0.

On lyhyempi int-tyyppi, jota sattumanvaraisesti kutsutaan lyhyeksi int-tyypiksi, joka käyttää 16 bittiä (2 tavua). Tämä pitää numeroita välillä -32768 - +32767. Jos käytät suurta lukumäärää inttejä, voit säästää muistia käyttämällä lyhyitä intsiä. Se ei tule nopeammin huolimatta siitä, että se on puolet koosta. 32-bittiset suorittimet hakevat arvoja muistista 4 tavun lohkoissa kerrallaan. Toisin sanoen 32 bittiä (siis nimi - 32-bittinen CPU!). Joten 16 bitin nouto vaatii silti 32-bittisen haun.

On pidempi 64-bittinen nimeltään pitkä pitkä C. Jotkut C ++-kääntäjät, vaikka eivät tue kyseistä tyyppiä, käyttävät vaihtoehtoista nimeä, esim. sekä Borland että Microsoft käyttävät _int64. Tämän valikoima on -9223372036854775807 - 9223372036854775807 (allekirjoitettu) ja 0 - 18446744073709551615 (allekirjoittamaton).

Ellet tee tieteellistä ohjelmointia erittäin suurilla tai pienillä numeroilla, käytät vain tuplatyökaluja suurempaan tarkkuuteen. Kelluvat ovat hyviä 6 numeron tarkkuudella, mutta kaksinkertaistuvat tarjoavat 15.

Tarkastellaan numeroa 567.8976523. Se on kelvollinen kelluvuusarvo. Mutta jos tulostamme sen alla olevalla koodilla, voit nähdä tarkkuuden puutetta. Numerossa on 10 numeroa, mutta se on tallennettu kelluvaan muuttujaan, jonka tarkkuus on vain kuusi.

nähdä Tietoja tuloista ja lähtöistä saadaksesi lisätietoja cout-toiminnasta ja tarkkuuden käytöstä. Tämä esimerkki asettaa tulosteen tarkkuuden 8 numeroon. Valitettavasti kelluvissa voi olla vain 6 ja jotkut kääntäjät antavat varoituksen kaksinkertaisen muuntamiseksi kelluvaksi. Kun se suoritetaan, se tulostuu 567.89764

Jos muutat tarkkuuden arvoon 15, tulostetaan numerolla 567.897644042969. Melko ero! Siirrä nyt desimaalipiste kaksi vasemmalle, jotta arvo on 5.678976523 ja suorita ohjelma uudelleen. Tällä kertaa se antaa 5.67897653579712. Tämä on tarkempi, mutta silti erilainen.

Jos muutat arvotyypin kaksinkertaiseksi ja tarkkuuden arvoksi 10, se tulostaa arvon tarkalleen määritellyn mukaisesti. Yleensä floatit ovat käteviä pienille, ei kokonaislukuille, mutta joissa on enemmän kuin 6 numeroa, sinun on käytettävä kaksinkertaisia ​​numeroita.

Tietokoneohjelmistojen kirjoittaminen ei olisi paljon hyötyä, jos et voisi tehdä lisäystä, vähentämistä jne. Tässä esimerkki 2.

Lisäyksen lisäksi voit tehdä myös vähennyksiä, kertoimia ja jakoja. Käytä + vain lisäämiseen, - vähennykseen, * kertolaskuun ja / jakoon.

Kelluvien laitteiden avulla et voi hallita kuinka monta desimaalia näytetään, ellet ole asettanut tarkkuutta aiemmin esitetyllä tavalla.

Nyt leveys, kohdistus, desimaalien määrä ja merkit voidaan asettaa cout esine ja iomanip sisältävät tiedostofunktiot.

Tuhannet erottimet ovat hieman monimutkaisempia. Ne asetetaan tietokoneen sijainnista. Maa-alue sisältää tietoja maasi kannalta merkityksellisistä, kuten valuutasymbolit ja desimaalipilkut sekä tuhansia erottimia. Isossa-Britanniassa ja Yhdysvalloissa numero 100,98 käyttää desimaalia. desimaalina, kun taas joissain Euroopan maissa se on pilkku, joten 5,70 € tarkoittaa 5 euron ja 70 sentin hintaa.

luo objektin mpunct mikä on viittaus a moneypunct malliluokka. Tällä on tietoa määritetystä alueesta - tässä tapauksessa thousands_sep () menetelmä palauttaa tuhansien erottimeen käytetyn merkin.

Huomautus Eri kääntäjien välillä näyttää olevan eroja siitä, miten cout.imbue käyttäytyy. Visual C ++ 2005 Express Edition -versiossa tämä sisälsi erottimet. Mutta sama koodi Microsoft Visual C ++ 6.0: n kanssa ei!

Jos käytät jompaa kumpaa näistä muodoista, cout.setf sitten tarkkuus() asettaa desimaalin tarkkuuden desimaalipilkun jälkeen (ei numeroiden kokonaismäärän), mutta kadotat tuhansien muotoilun. Myös nolla nolla (kuten ios_base:: showpoint ) otetaan automaattisesti käyttöön ilman tarvetta Showpoint.

Odotit jotain arvoa 11.0909090909. Itse asiassa arvo on 11. Miksi tämä on? koska ilmaisu oikealla puolella (tunnetaan nimellä rvalue) on kokonaisluku / kokonaisluku. Joten se käyttää kokonaislukuaritmetiikkaa, joka heittää murto-osan pois ja antaa 11 f: lle. Sen muuttaminen

C-luokassa ei ole sellaista tyyppiä kuin a bool. Lausekkeet C: ssä perustuivat nolla-arvoon väärään tai nolla-arvoiseen totuuteen. C ++ -tyypissä tyyppi bool osaa ottaa arvoja totta tai väärä. Nämä arvot vastaavat edelleen arvoa 0 ja 1. Jossain kääntäjän siinä on

Tai ainakin se toimii näin! Kaksi alla olevaa riviä ovat voimassa ilman valua, joten kulissien takana boolit muunnetaan implisiittisesti inteiksi ja niitä voidaan jopa suurentaa tai pienentää, vaikka tämä on erittäin huono käytäntö.

If tekee silti if-tiedoston, koska huono muuttuja ei ole nolla, mutta se on huono koodi ja sitä tulisi välttää. Hyvä käytäntö on käyttää niitä tarkoituksenmukaisesti. jos (! v) on kelvollinen C ++, mutta pidän parempana jos (v! = 0). Se on kuitenkin makuasia, ei a pakko tehdä direktiivi.

on parempi, että kääntäjä tarttuu virheisiin käännöshetkellä kuin käyttäjä suorituksen aikana

instagram story viewer