Sisällysluettelo
Takaisin kirjan esittelyyn
Jatka muita peruselementtejä
Johdanto C ++: een
Kohderyhmä:
Aloittelijoiden ohjelmointi, yhteenveto riittää vaihtamiseen.
Oppimistavoite:
Peruselementit C ++: ssa
On vanha perinne avata uusi ohjelmointikieli "Hello World" -ohjelmalla.Tämän kirjan ei pitäisi myöskään rikkoa perinteitä, tässä on "Hello World" -ohjelma C ++:
#sisältää// Syöttö- ja lähtökirjastoint pää-() { // päätoiminto std:::nyrkkeily << "Hei, sinä kaunis maailma!" << std:::endl; // lähtö palata 0 -; // Valinnainen paluu käyttöjärjestelmään}
tulos-
Hei, sinä kaunis maailma!
Tosin se ei ole alkuperäinen versio, vaan alkuperäinen versio "Hello World".Jos suoritat ohjelman, saat tekstin "Hei, kaunis maailma!"Etkö tiedä kuinka voit suorittaa ohjelman?Lue sitten lukuKääntäjä.
#sisältää
Anna tarvittavat komennot syöttö- ja ulostuloon.Seuraavaksi "päätoiminto" alkaapää-()
.Tätä päätehtävää kutsutaan, kun ohjelma suoritetaan.Joten se on ohjelman keskeinen ydin.Muuten, jos funktiot mainitaan tekstissä, aina takertuu, jotta ne voidaan erottaa paremmin muista kielikomponenteista, kuten muuttujista.
std:::nyrkkeily
kuvaa vakiolähtövirtaa.Teksti näkyy yleensä päätelaitteessa (jos lähtöä ei ohjata tiedostoon tai toiseen ohjelmaan).Kaksi nuolta (<<
) merkitsevät, että vakiopainon takana oleva teksti on "työnnetty".Sestd:::endl
Rivin tauko ja varmistaa, että teksti on nyt tulossa näytöllä.
palata 0 -
Ohjelma päättyy ja osoittaa, että se suoritettiin onnistuneesti.Yksityiskohdat käsitellään yksityiskohtaisesti seuraavissa luvuissa (tai osioissa).Tämä rivi on valinnainen;Jos sitä ei ole määritetty, kääntäjä palauttaa toistuvasti 0.
Tällä hetkellä sinun on muistettava, että jokainen C ++ -komento puolipisteellä (;
) on valmis ja söpöt suluet ({...}
) Symboloi yhteenkuuluvuutta - myös päätoiminnossa.Kaikki, mikä seisoo kiharakiinnikkeiden välillä, kuuluu hänelle.Tiloilla, tabic -merkkeillä ja linjakatkoksilla ei ole roolia C ++ -kääntäjälle.Voit kääntää seuraavan ohjelman sekä sen helpon -lue -version yllä olevasta:
Tämä ohjelma toimii, mutta on erittäin vaikea lukea ihmisille ...
#sisältääint pää- ( -A {std ::: nyrkkeily << "Hei, sinä kaunis maailma!"<<std ::: endl;palata 0 -; }
tulos-
Hei, sinä kaunis maailma!
Sinun pitäisi olla varovainen linjojen kanssaHio
alkaa.Tilat ja välilehdet ovat täällä myös merkityksettömiä, mutta linjakatkoja ei saa tapahtua.
Muuten, ei ole merkitystä (tietokoneellesi), pidätkö jotain sellaista// Syöttö- ja lähtökirjasto
Kirjoita ohjelmallesi vai ei.Nämä ovat niin kutsuttuja kommentteja, jotka tutustuvat pian tarkemmin.Muuten, sinun on huomattava, että C ++ on merkityksellinen C ++: lle.Vakiokirjaston avainsanat ja nimet on aina kirjoitettu.On olemassa tiettyjä yleissopimuksia itse määrittelemien nimien tärkeimmistä/pienistä kirjoittamisesta, joita käsitellään myöhemmässä luvussa.
Ilmoitus
Kaikki tässä kirjassa kuvatut ohjelmat ovat niin kutsuttuja komentoriviohjelmia.Jos sinulla on yksiIdeKäytä kehittämiseen ja soita ohjelma suoraan siitä, voi tapahtua, että näet vain lyhyen salaman ohjelmastasi, koska komentorivi -ikkuna sulkeutuu heti ohjelman päättymisen jälkeen.
Tässä tapauksessa sinulla on kaksi vaihtoehtoa:
- Soita komentoriville ja suorita ohjelma manuaalisesti.(Tätä suositellaan!)
- Katso, onko IDE: ssä toiminto, joka pitää ikkunan auki avainpainetta varten ohjelman päättymisen jälkeen.(Tällaisen vaihtoehdon ei tarvitse olla käytettävissä!)
Yksittäiset ja poistumistilot antavat sinulle mahdollisuuden olla vuorovaikutuksessa ohjelman kanssa.Tässä luvussa käsitellään C ++ -konsolin näppäimistöä ja lähtöä tyypillisessä muodossa.Tutustu C -varianttiin myöhemmin.
Jotta voit käyttää C ++ -sertiota ja lähtöä, tarvitset kirjastoniostream
integroitu.Se tapahtuu:
#sisältää
Sen jälkeen komennot on ilmoitettava siitä, koska ne ovat nimihuoneessa (englanti.nimitila
) ehto.Saat selville, mitkä nimet ovat ja mitä käytät heille myöhempää käyttöä varten.Syöttö- ja lähtötaulun käyttämiseksi sinun on kerrottava kääntäjälle: käytä nimihuonettastd
.Tätä varten on kaksi vaihtoehtoa: Voit käyttää seuraavaa riviä kaikkiin nimiin nimen huoneestastd
Asettaa:
käyttäminen nimitila std;
Tai voit tehdä nimihuoneen "std
”Ilmoita aina suoraan.Se sisältää kaikki C ++ -standardikirjaston komponentit.Tämän kirjan ohjelmissa nimihuone annetaan aina suoraan.Tämä tarkoittaa esimerkiksi, jos objektia on käytettävä, joka nimihuoneessa "std
"Valheita, hän tulee"std:::
”Ennustettu.Kaksi kaksinkertaista pistettä kutsutaan alueoperaattoriksi.
Varianttikäyttäminen nimitila
tulisi yleensä käyttää vain funktioissa, koska käytettynä globaalissa nimihuoneessa koko nimikeskeet vanhentuvat.Sitä käytetään usein maailmanlaajuisesti painetuissa kirjoissa, koska tämä säästää tilaa ja mitä tällaisissa kirjoissa on vähän.Älä lykkää sitä, se on huono tyyli.
Helppo painos[[Muokata-
Nyt haluamme vihdoin tehdä jotain käytännöllistä.Tosin mitään maapallon puristavaa ja periaatteessa edes jotain todella uutta, koska olemme jo antaneet tekstiä "Hello World" -ohjelmassa.
#sisältääint pää-() { std:::nyrkkeily << "Tämä teksti on nyt komentorivillä!"; std:::nyrkkeily << "Tämä teksti seuraa suoraan .."; std:::nyrkkeily << '.';}
tulos-
Tämä teksti on nyt komentorivillä! Tämä teksti seuraa suoraan ...
Kuten itse teksti sanoi, se näkyy komentorivillä ja toinen seuraa keskeytystä.Viimeinen kolmesta viimeisestä kohdasta on lisälinja osoittaa, että et laita yksittäisiä merkkejä lainausmerkeihin, vaan apostrofiseen.Tämä koskee kuitenkin vain yksittäisiä merkkejä, kahdesta merkistä se on jo merkkijono ja sitten käytät normaaleja lainausmerkkejä.
Jos haluat lisätä linjatauko merkkijonoon, on kaksi vaihtoehtoa.VoitPoistumisjärjestys \n
Aseta se merkkijonoon taiManipulaattori endl
(loppulinja) käytä.Se, mitä paeta -sekvenssejä tai manipulaattoreita tarkalleen on, on myöhemmän luvun aihe, mutta seuraava esimerkki osoittaa linjan tauon käytön:
#sisältääint pää-() { std:::nyrkkeily << "Teksti komentorivillä!\ n"; // Escape -sekvenssi \ n std:::nyrkkeily << "Tämä teksti seuraa ...\ n"; // se on erillisellä viivalla std:::nyrkkeily << std:::endl; // Tyhjä viiva ENDL: n avulla std:::nyrkkeily << "Teksti komentorivillä!" << std:::endl; // linjatauko Endlin kanssa std:::nyrkkeily << "Tämä teksti liittyy ..." << std:::endl; // se on erillisellä viivalla}
tulos-
Teksti komentorivillä!Tämä teksti seuraa ...Teksti komentorivillä!Tämä teksti seuraa ...
Molemmilla menetelmillä näyttää olevan sama vaikutus.Käytä Escape -sekvenssimenetelmää"\ n"
.std:::endl
Se on hitaampaa, koska se ei vain viettää linjataukoa, vaan myös tyhjentää lähtöpuskurin.Tämä selitetään yksityiskohtaisemmin myöhemmin.
Helppo syöttö[[Muokata-
Syöttöön on käytettävä vähän, koska jotain lukeminen on välttämätöntä lukemisen tallentamiseksi.Tätä "säilöä" kutsutaan muuttujaksi.Ensin on luotava muuttuja.On parasta selittää syöttö esimerkillä:
#sisältääint pää-() { int kokonaisluku; std:::nyrkkeily << "Käyttäjän syöttö:"; std:::elokuvateatteri >> kokonaisluku; std:::nyrkkeily << "Heillä on " << kokonaisluku << "Astui sisään.";}
tulos-
Käyttäjän syöttö: 643Sinulla on 643.
Kuten jo mainittiin, muuttuja luodaan (int kokonaisluku;
), jolle sitten annetaan arvo (elokuvateatteri >> kokonaisluku;
).Tämä toinen rivi tarkoittaa jotain: Lue kokonaismäärä näppäimistöä ja tallenna ne muuttujaankokonaisluku
.
elokuvateatteri
(puhuttuc-in) on näppäimistö niin sanotusti,kokonaisluku
On muuttuja ja>>
tarkoittaa jotain "jälkeen".Yhdessä on "näppäimistö muuttujalle", joten muuttujan näppäimistön "sisältö" tulee muuttujaksikokonaisluku
viive.Muuten se, että näppäimistöltä luetaan kokonaisluku, riippuu muuttujien tietotyypistä, mutta enemmän siitä myöhemmin.
Muuttujien sisällön antamiseksi uudelleen sinun on tehtävä muuta kuin sinä toisella liukuvalla operaattorilla (<<
) takananyrkkeily
(puhuttuC-O-O-).On helposti mahdollista vaihtaa useita tällaisia liukuoperaattoreita peräkkäin, kunhan sinulla on vain viimeinen lisäys tai lähtö puolipisteellä (;
) saattaa loppuun.Sisäänpääsyessä tietysti>>
-Operaattori<<
-Operaattoria voidaan käyttää.Tällaisten rakenteiden lisäys- tai lähtöjärjestys vastaa lähdetekstiä syötettyä jaksoa.Mitä ensin takananyrkkeily
taielokuvateatteri
seisoo, joten se suoritetaan myös ensin.
Tämän luvun liitteestä löydät:
- Kysymykset ja siihen liittyvät vastaukset.
Kysymykset
Mikä täällä on vikaa?
int kokonaisluku;std:::elokuvateatteri << kokonaisluku;
Operaattorin on>>
olla.
Toimiiko seuraava esimerkki?
#sisältääint pää-() { int kokonaisluku; std:::elokuvateatteri >> kokonaisluku; std:::nyrkkeily << "Heillä on " << kokonaisluku << "Astui sisään.";}
Esimerkki toimii erinomaisesti.Linjakatkokset eivät ole ongelma niin kauan kuin ne eivät ole merkkijonon sisällä.Jos kuitenkin aiot luoda linjakatkaisun lähtöön, sinun on\n
taiendl
käyttää.
Kaikilla ohjelmointikielillä on mahdollisuus tehdä muistiinpanoja lähdetekstiin.Muille tai itsellesi, koska muutaman viikon kuluttua et ehkä pysty ymmärtämään omaa lähdetekstiäsi ilman lisäilmoitusta.Kommentit auttavat sinua ja muita parempia ja ennen kaikkea nopeammin lähteen tekstin aiheuttamat.K ++: ssa on kaksi varianttia kommenttien kirjoittamiseen:
// Kommentti, joka aloitetaan kahdella viivalla, nousee linjan loppuun/* Tällainen kommentti voiyli useita linjojalaajentaa tai ... */eräs = b - /* ... ennen linjan loppua.*/ Tai c;
Ensimmäinen lajike, joka koskee linjan loppua, on moderni kommenttitapa.Se on yleensä parempi, koska sillä on joitain etuja verrattuna vanhaan varianttiin, joka tulee edelleen C.Toista lajiketta (jota joskus kutsutaan myös C-commentiksi) monirivisessä muodossaan tulisi käyttää vain paikoissa, joissa pidempiä tekstikohteita on ja mahdollisuuksien mukaan, ei koodin välillä.Tällaisia kommentteja käytetään usein tiedoston alussa sisällön lyhyesti yhteenvetoksi tai lisenssilain sääntelemiseksi.
Multi -linjan kommenttien tärkein haitta on, että et voi "pesästä".Esimerkiksi lähdekoodin osia kommentoidaan usein testitarkoituksiin.Seuraavan esimerkin tulisi osoittaa tämä:
#sisältää/ * Syöttö- ja lähtökirjasto */int pää-() { / * Päätoiminto *//*Std :: cout << "Hei, sinä kaunis maailma!"<< std :: endl;/ * Lähtö */*/}
Se ei toimisi.Jos muita kommentteja käytetään, tällaisia ongelmia ei kuitenkaan ole:
#sisältää// Syöttö- ja lähtökirjastoint pää-() { // päätoiminto /*Std :: cout << "Hei, sinä kaunis maailma!"<< std :: endl;// lähtö*/}
Ensimmäisessä esimerkissä/ * Lähtö */
Yksinkertaisesti huomiotta.Viimeinen osa lopettaa kommentin, jonka on tarkoitus kommentoida koodirinjaa, ja todellinen johtopäätös johtaa kokoamisvirheeseen.Tosin tämä ei ole liian huono, koska tällainen virhe löytyy nopeasti, mutta sen välttäminen alusta alkaen on vielä enemmän aikaa.Muuten, vähemmän on kirjoitettava yhden linjan kommenttien tapauksessa.Poikkeus on kommentteja, jotka ovat yksinkertaisesti liian pitkiä kirjoittaa ne yhdelle riville.Siitä huolimatta heidän pitäisi myös käydä läpi//
Kommentit toteutuvat.
Paljon koodia ...
// Olen esimerkki pitkästä kommentista, joka on kopioitu// Selausnauhat useiden linjojen yli.Olisin tiedoston alussa// Olisin todennäköisesti varustettu muilla kommentteilla,// Mutta koska minua ympäröi selvästi valtava määrä lähdetekstiä,// päätit // lisääntyneestä kirjoitustyöstä huolimatta
Paljon enemmän koodia ...
Tipp
Monet tekstin toimittajat sisältävät avainyhdistelmän, jonka kautta teksti voidaan perehtyä ja kommentoida.Tämä on erityisen hyödyllistä pidemmille koodikohdille.
Tässä luvussa tietokoneemme tulisi tehdä mitä se voi tehdä parhaiten: Laske.Sillä välin istumme ja katsomme tai pikemminkin, teemme sen, kun olemme kertoneet hänelle mitä odottaa.
Helppo aritmeettinen[[Muokata-
#sisältääint pää-() { std:::nyrkkeily << "7 + 8 =" << 7 Tai 8 << std:::endl; // laskun painos}
tulos-
7 + 8 = 15
Tosin olisit todennäköisesti voinut ratkaista tämän laskun päähän, mutta miksi sinun pitäisi tehdä sinusta niin tarpeettomasti uupunut.Tietokoneesi toimittaa myös oikean tuloksen, ja jos yhdistät tämän numeroiden merkinnän kanssa, voit lisätä kaksi eri numeroa jopa jokaisen ohjelman kanssa:
#sisältääint pää-() { int Summa1- Määrä2; // Luo kaksi muuttujaa std:::elokuvateatteri >> Summa1 >> Määrä2; // Kirjoita kaksi numeroa std:::nyrkkeily << Summa1 << " +" << Määrä2 // Vietä molemmat erikseen " +" << "=" // lähtö "=" << Summa1 Tai Määrä2 // Laske ja kuluta tulos << std:::endl; // Uusi rivi}
tulos-
Käyttäjän syöttö: 774Käyttäjän syöttö: 123774 + 123 = 897
Tulos voi tietysti myös tallentaa muuttujaan.Seuraava esimerkki osoittaa tämän mahdollisuuden:
#sisältääint pää-() { int Summa1- Määrä2- tulos; // Luo kolme muuttujaa std:::elokuvateatteri >> Summa1 >> Määrä2; // Kirjoita kaksi numeroa tulos = Summa1 Tai Määrä2; // Laske tulos std:::nyrkkeily << Summa1 << " +" << Määrä2 // Vietä molemmat erikseen " +" << "=" // lähtö "=" << tulos // Lähtötulos << std:::endl; // Uusi rivi}
tulos-
Käyttäjän syöttö: 400Käyttäjän syöttö: 300400 + 300 = 700
Neljä suuria[[Muokata-
C ++ hallitsee neljää perusaritmeettista perusainetta: lisäys (Tai
), Vähennys (-
), Kertolasku (*
) ja divisioona (-
).Aivan kuten matematiikassa, sääntöä sovelletaan C ++: Point -laskelmaan kulkee kaiken ennen linjan laskelman ja sulujen menevän.Seuraavan esimerkin tulisi osoittaa monimutkaisempi lasku:
#sisältääint pää-() { int tulos; // Luo muuttuja tulos = (((3 Tai 3*4-A-5 - 1-A*512 - 768; // Laske tulos std:::nyrkkeily << "((3 + 3*4)/5 - 1)*512 - 768 =" // lähtötehtävä << tulos // Lähtötulos << std:::endl; // Uusi rivi}
tulos-
((3 + 3*4)/5 - 1)*512 - 768 = 256
Tässä järjestyksessä odotetaan:
3 * 4 = 12 3 + 12 = 15 15/5 = 3 3 - 1 = 2 2 * 512 = 10241024 - 768 = 256
Sinun tulisi varmistaa, että sinulla on aina sama määrä avoimia ja sulkemiskiinnikkeitä, koska tämä on suosittu virhe, jota aloittelijat yleensä eivät löydä niin nopeasti.Tällaisissa tapauksissa kääntäjät tuovat usein raportteja, jotka ovat joitain rivejä todellisen virheen alapuolella.
Yhdistelmäoperaattorit[[Muokata-
C ++ on kieli laiskoille ihmisille.Siksi on mahdollista yhdistää aritmeettiset operaattorit toimeksiannon operaattoriin.Tämä näyttää sitten tältä:
määrä = 22;määrä += 5; // numero = numero + 5;määrä -= = 7; // Numero = numero - 7;määrä *= 2; // numero = numero * 2;määrä /= 4; // numero = numero / 4;
Voit nähdä kommentin kirjoitetun pitkän version.Tämä ei tarkoita lyhyesti, että laskentatoimenpide vasemmalla olevilla muuttujilla ja oikealla puolella oleva arvo ja vasemmalla olevien muuttujien tulos määritetään allokaatiooperaattorille.Sinun tulisi mieluummin yksityiskohtaisesti, koska se ei vain suojaa sormeasi, vaan on myös hiukan nopeampi.
On parasta ymmärtää tämä, jos vain kokeilet sitä.Jos oikealla on muita aritmeettisia operaatioita, ne suoritetaan ensin.Koko asia esitetään sitten seuraavasti:
määrä = 5;määrä *= 3 Tai 4; // numero = numero * (3 + 4);
Lisäys ja asetus[[Muokata-
Lisäys tarkoittaa muuttujan arvon lisäämistä 1: llä, vastaavasti se tarkoittaa laskentaa laskua 1.Muuten, C ++ velkaa lisäysoperaattorin nimen.Kaksi operaattoria on saatavana etuliitteessä ja Postfix -variantissa.Operaattoreita on yhteensä neljä:
määrä = 5;määrä++; // lisäys PostFix (numero == 6)++määrä; // lisäys etuliite (numero == 7)määrä-; // Alennus postFix (numero == 6)-määrä; // Decorder -etuliite (numero == 5)
Ero lisäyksen välillä (++
) ja decorder (-
) on tunnistettavissa ilman suurempaa ajattelua.Etuliitteen ja PostFixin merkitys puolestaan ei ole välittömästi syntynyt.
Ero etuliitteen ja PostFix: n välillä on palautusarvossa.Etuliitevariantti lisää numeron arvoa 1 ja palauttaa tämän uuden arvon.PostFix -variantti lisää myös muuttujien arvoa 1: llä, mutta palauttaa arvon, joka muuttujalla oli ennen kasvua.
Seuraava pieni ohjelma näyttää eron:
#sisältääint pää-() { int määrä; // Luo muuttuja std:::nyrkkeily << "Anna numero suoraan:\ n"; määrä = 5; // Määritä arvo 5 std:::nyrkkeily << määrä << '' '' '' '' '; // Lähtöluku määrä++; // lisäys PostFix (numero == 6) std:::nyrkkeily << määrä << '' '' '' '' '; // Lähtöluku ++määrä; // lisäys etuliite (numero == 7) std:::nyrkkeily << määrä << '' '' '' '' '; // Lähtöluku määrä-; // Alennus postFix (numero == 6) std:::nyrkkeily << määrä << '' '' '' '' '; // Lähtöluku -määrä; // Decorder -etuliite (numero == 5) std:::nyrkkeily << määrä << '' '' '' '' '; // Lähtöluku std:::nyrkkeily << "\ nPaljasta operaattorin palautusarvo:\ n"; määrä = 5; // Määritä arvo 5 std:::nyrkkeily << määrä << '' '' '' '' '; // Lähtöluku std:::nyrkkeily << määrä++ << '' '' '' '' '; // lisäys PostFix (numero == 6) std:::nyrkkeily << ++määrä << '' '' '' '' '; // lisäys etuliite (numero == 7) std:::nyrkkeily << määrä- << '' '' '' '' '; // Alennus postFix (numero == 6) std:::nyrkkeily << -määrä << '' '' '' '' '; // Decorder -etuliite (numero == 5) std:::nyrkkeily << "\ nNumeron lopullinen arvo: " << määrä << std:::endl;}
tulos-
Anna numero suoraan:5 6 7 6 5Paljasta operaattorin palautusarvo:5 5 7 7 5Numeron lopullinen arvo: 5
Aihe selitetään yksityiskohtaisemmin myöhemmin ...
Myöhemmässä luvussa saat muutamia lisätietoja siitä, mikä voi mennä pieleen aritmeettisen kanssa ja kuinka välttää sitä.Jos saat yhtäkkiä ilmeisesti selittämättömiä tuloksia kokeilemalla aritmeettisia operaatioita, on aika katsoa tätä lukua.
Tämän luvun liitteestä löydät:
- Tehtävät ja niihin liittyvät näytteen ratkaisut.
Tehtävät
Laske seuraavien tehtävien tulokset ja kirjoita ohjelma, joka tekee saman.
Numero = (500 - 100*(2 + 1))*5 Numero = (numero - 700) /3 Numero + = 50*2 Numero*= 10 - 8 Numero - 200 - 200
#sisältääint pää-() { int määrä; määrä = (500 - 100*(2 Tai 1))*5; // 1000 määrä = (määrä - 700-A-3; // 100 määrä += 50*2; // 200 määrä *= 10 - 8; // 400 määrä /= määrä - 200; // 2 std:::nyrkkeily << "Numero:" << määrä;}
tulos-
Numero 2
muuttujatovat arvojen säilöjä, ne niin sanovat, että ne tarjoavat ohjelman muistin.VakioOvat erityisiä muuttujia, ne eivät koskaan muuta arvoaan.SeTietotyyppiMuuttuja tai vakio kuvaa, kuinka sisältö on ymmärrettävä.
Tietokone tuntee vain kaksi perustilaa: 0 ja 1. Tällaisten olosuhteiden sarjojen mukaan voidaan edustaa enemmän erilaisia arvoja.Kahdeksan linjattuun olosuhteeseen (= 8bit = 1byte), 256 erilaista arvoa voidaan jo näyttää.Nämä arvot voidaan tulkita esimerkiksi kokonaislukuina (kirjoitettuina) merkkeinä, totuuden arvo tai liukuvalmiste.Tietotyyppi tarjoaa siis tietoja siitä, mikä se on.
C ++ -standardissa ei määrätä, että tavun on koostettava tarkalleen 8-bittisestä, tämä luku on laajalle levinnyt.Siksi on mahdollista, että erityisprosessoriarkkitehtuurille asetetaan joukko 10 bitistä "tavua".Tämä on kuitenkin erittäin harvinaista, joten oletamme, että tavu koostuu 8 -bittisestä.
Tietotyypit[[Muokata-
Ensinnäkin C ++: n tietotyypit tulisi kuvata, koska ne ovat perustavanlaatuisia muuttujalle tai vakioille.Neljä tärkeintä (ryhmäryhmää) ovat: totuuden arvot, merkit, kokonaisluvut ja liukuvat pilkut.
Totuusarvot[[Muokata-
Totuuden arvojen tietotyyppi kutsutaan C ++: ssabool
Mikä on lyhenne Booleanille.Hän voi hyväksyä vain kaksi ehtoa:totta
(tosi) taiväärä
(väärä).Vaikka 1 -bittinen todella riittää, onbool
Ainakin yksi tavun koko (ts. 8 -bittinen), koska 1 -byte on pienin osoitettavissa oleva yksikkö ja siten vähimmäiskoko jokaiselle tietotyypille.On myös täysin mahdollista, että abool
Esimerkiksi 4 -tavua miehitetty, koska tämä lisää pääsyn nopeutta joidenkin prosessoriarkkitehtuurien kohdalla.
Merkki[[Muokata-
Merkit ovat tosiasiallisesti kokonaislukuja.Ne eroavat heistä vain lisäyksen ja tuotoksen suhteen.Jokaiselle numerolle osoitetaan merkki.Numerot voidaan laskea normaaliksi, mutta määritetty merkki näkyy näytöllä.Käytetty merkkijoukko määritetään, minkä merkin luvusta vastaa.
Suurin osa merkkisarjoista sisältää SO -nimisenAscii-koodi(Eräsmeri -merikalvoSTakaraCoodia jtkMinänimeäMinäVaihto), joka vie merkit 0–127.Se sisältää 32 ohjausmerkkiä (0–31) ja 96 tulostettavaa merkkiä (32–127).
hiiltyä
on merkkien vakiotietotyyppi.Se on yleensä 1 -tavua ja voi siksi edustaa 256 eri merkkiä.Nämä ovat riittäviä laajennettuun ASCII -koodiin, joka esimerkiksi määrittelee myös saksalaiset umlautit.Tietotyypit ovat saatavilla Unicode -merkeillechar16_t
Kooltaan 2 tavua jachar32_t
Koko 4byte.Aikaisemmin tietotyyppiä käytettiin myös Unicodewchar_t
mikä oli hienoa järjestelmästä 2 tai 4byte.Tätä tietotyyppiä ei kuitenkaan pidä enää käyttää.Seuraava luettelo sisältää hyödyllisiä linkkejä Wikipedian artikkeleihin:
- Ascii
- Unicode(UTF-8-UTF-16-UTF-32-A
- ISO 8859-1(Latina-1)
- CodePage 437(DOS / DOS-Box)
K ++: ssa on 4 rakennettua tietotyyppiä merkkejä varten:
hiiltyä
char16_t
char32_t
wchar_t
(vanhentunut)
Täysin[[Muokata-
C ++ määrittelee seuraavat rakennetut -tietotyypit kokonaislukuille:
Oikeinkirjoitus | Tyypillinen | Bittien lukumäärä jälkeentietomalli | ||||
---|---|---|---|---|---|---|
C ++ -standardi | LP32 | Bitti | LLP64 | LP64 | ||
allekirjoitettu hiiltyä | allekirjoitettu hiiltyä | vähintään 8 | 8 | 8 | 8 | 8 |
allekirjoittamaton hiiltyä | allekirjoittamaton hiiltyä | |||||
lyhyt | lyhyt | vähintään 16 | 16 | 16 | 16 | 16 |
lyhyt int | ||||||
allekirjoitettu lyhyt | ||||||
allekirjoitettu lyhyt int | ||||||
allekirjoittamaton lyhyt | allekirjoittamaton lyhyt | |||||
allekirjoittamaton lyhyt int | ||||||
int | int | vähintään 16 | 16 | 32 | 32 | 32 |
allekirjoitettu | ||||||
allekirjoitettu int | ||||||
allekirjoittamaton | allekirjoittamaton | |||||
allekirjoittamaton int | ||||||
pitkä | pitkä | vähintään 32 | 32 | 32 | 32 | 64 |
pitkä int | ||||||
allekirjoitettu pitkä | ||||||
allekirjoitettu pitkä int | ||||||
allekirjoittamaton pitkä | allekirjoittamaton pitkä | |||||
allekirjoittamaton pitkä int | ||||||
pitkä pitkä | pitkä pitkä | vähintään 64 | 64 | 64 | 64 | 64 |
pitkä pitkä int | ||||||
allekirjoitettu pitkä pitkä | ||||||
allekirjoitettu pitkä pitkä int | ||||||
allekirjoittamaton pitkä pitkä | allekirjoittamaton pitkä pitkä | |||||
allekirjoittamaton pitkä pitkä int |
Kaikki oikeinkirjoitukset ovat identtisiä määritetyn tyypin kanssa.Tyyppisarakkeessa käytetty oikeinkirjoitus on tässä kirjassa käytetty oikeinkirjoitus.Käytännössä kuitenkin riippuen siitä, kuka kirjoitti koodin, löydät myös ensimmäisen sarakkeen vastaavat oikeinkirjoitukset.
Tarkka bittien lukumäärä riippuu toteutuksesta ja on yleensätietomallinimetty.Neljädatamallitovat laajalle levinnyt:
- 32 -bittinen järjestelmä
- LP32tai2/4/4(
int
hattu 16 bittiä,pitkä
ja käsillä on 32 bittiä)- Win16 tuli
- Bittitai4/4/4(
int
-pitkä
ja käsillä on 32 bittiä)- Win32 tuli
- Unix- ja Unixoid Systems (Linux, Mac OS X)
- LP32tai2/4/4(
- 64 -bittinen järjestelmä
- LLP64tai4/4/8(
int
japitkä
on 32 bittiä, käsillä on 64 bittiä)- Win64 API
- LP64tai8.4.2018(
int
hattu 32 bittiä,pitkä
ja käsissä on 64 bittiä)- Unix- ja Unixoid Systems (Linux, Mac OS X)
- LLP64tai4/4/8(
Allekirjoitettujen tyyppien arvoalue (»allekirjoitettu
«) Laske:
Signaalit tyypeille (»allekirjoittamaton
«) Hänet lasketaan:
Nämä kaksi ovat silmiinpistäviä taulukossahiiltyä
-Päivätyypit.Päinvastoin kuin muut tietotyypit, täällä ei ole oikeinkirjoitusta, jossa lopulta yksiint
seisoo.Ja mikä on vielä tärkeämpääallekirjoitettu hiiltyä
ei pidähiiltyä
olla lyhennetty!Siksi koskahiiltyä
Merkkien tietotyyppi on samalla kunallekirjoitettu hiiltyä
jaallekirjoittamaton hiiltyä
Yleensä edustavat numeroita.Historiallisesti C ++: n hahmojen ja lukujen välinen ero on valitettavasti erittäin epäpuhdas, mikä on erityisesti tapaushiiltyä
-Päivätyypit näkyvät.
Yhtä hyvin kuinallekirjoitettu hiiltyä
, yhtä hyvin kuinallekirjoittamaton hiiltyä
käsitelläint
valettu (muunnetaan, lisää luvussaValaistus) täytyy tulla.Tietotyyppihiiltyä
voi olla joko arvoalueelta kääntäjästä riippuenallekirjoitettu hiiltyä
taiallekirjoittamaton hiiltyä
olla identtinen.On kuitenkin huomattava, ettähiiltyä
Silti itsenäinen tyyppi!Tämä ero ei ole niin tärkeä tällä hetkellä, mutta palaamme takaisin tähän (tärkeään) yksityiskohtaan (tärkeätä mallin yhteydessä).
Tällä hetkellä sinun tulee muistaa: Jos haluat edustaa numeroa, jolla on 1 tavun muuttuja, käytä sittenallekirjoitettu hiiltyä
taiallekirjoittamaton hiiltyä
Jos haluat edustaa merkkiä, käytähiiltyä
.
Valitseint
Jos tämä tyyppi voi tallentaa tarvittavan arvoalueen kaikki numerot, käytä signless -numeroitaallekirjoittamaton
.Tämä arvoalue ei ole riittävä ja onpitkä
isompi, ota sittenpitkä
(tai.allekirjoittamaton pitkä
).lyhyt
jaallekirjoittamaton lyhyt
tulisi käyttää vain, jos säilytystilaa on vähän, esimerkiksi käytettäessä suuria taulukkoja tai jos matalan tason tietorakenteita on käytettävä.Varmista, että sen muuttujan teoreettisesti suurin arvo ei ylitä suurinta mahdollista arvoa.Sama koskee tietysti myös pienimmän mahdollisen arvon laskua.
Muuten, alempi tai ylivuoto on täysin mahdollista.Useimmat kääntäjät tarjoavat mahdollisuuden luoda virhe tällaisessa tapauksessa, mutta tämä vaihtoehto ei ole oletuksena aktiivinen.Seuraavassa pienessä esimerkissä tietotyypit ovatlyhyt
(Min: -32768, Max: 32767) jaallekirjoittamaton lyhyt
Käytetään ja molemmissa suoritetaan yksi alempi ja ylivuoto:
Perustuen siihen, ettälyhyt
on yksi koko 2 -tausteinen, kaksi ylivuotoa tai alusvuotoa.
#sisältääint pää-() { lyhyt muuttuja1 = 15000; allekirjoittamaton lyhyt muuttuja2 = 15000; std:::nyrkkeily << "Lyhyt muuttuja:" << muuttuja1 << std:::endl << "Allekirjoittamaton lyhyt muuttuja:" << muuttuja2 << std:::endl << "+30000\ n \ n"; muuttuja1 += 30000; muuttuja2 += 30000; std:::nyrkkeily << "Lyhyt muuttuja:" << muuttuja1 << "(Ylivuoto)" << std:::endl << "Allekirjoittamaton lyhyt muuttuja:" << muuttuja2 << std:::endl << "+30000\ n \ n"; muuttuja1 += 30000; muuttuja2 += 30000; std:::nyrkkeily << "Lyhyt muuttuja:" << muuttuja1 << std:::endl << "Allekirjoittamaton lyhyt muuttuja:" << muuttuja2 << "(Ylivuoto)" << std:::endl << "-30000\ n \ n"; muuttuja1 -= = 30000; muuttuja2 -= = 30000; std:::nyrkkeily << "Lyhyt muuttuja:" << muuttuja1 << std:::endl << "Allekirjoittamaton lyhyt muuttuja:" << muuttuja2 << "(Alempi ulottuvuus)" << std:::endl << "-30000\ n \ n"; muuttuja1 -= = 30000; muuttuja2 -= = 30000; std:::nyrkkeily << "Lyhyt muuttuja:" << muuttuja1 << "(Alempi ulottuvuus)" << std:::endl << "Allekirjoittamaton lyhyt muuttuja:" << muuttuja2 << std:::endl;}
tulos-
Lyhyt muuttuja: 15000Allekirjoittamaton lyhyt muuttuja: 15000+30000Lyhyt muuttuja: -20536 (ylivuoto)Allekirjoittamaton lyhyt muuttuja: 45000+30000Lyhyt muuttuja: 9464Allekirjoittamaton lyhyt muuttuja: 9464 (ylivuoto)-30000Lyhyt muuttuja: -20536Allekirjoittamaton lyhyt muuttuja: 45000 (alempi ulottuvuus)-30000Lyhyt muuttuja: 15000 (alempi ulottuvuus)Allekirjoittamaton lyhyt muuttuja: 15000
Tämä ilmiö tulee ymmärrettävämmäksi, jos numerot ovat binaarisia (Kaksoisnumerojärjestelmä).Yksinkertaisuuden vuoksi alamme kuvataallekirjoittamaton lyhyt
Muuttujat, kaksi ensimmäistä 300 000 lisäystä: kumpikin:
Lisäys kaksoisjärjestelmäänallekirjoittamaton lyhyt
Data -symbolina 1 0011101010011000 |15000 + | 011101100110000 |30000 ------------------------------------------------- --- --------------------- = | 10101111001000 |45000 Laskenta 2 | 10101111001000 |45000 + | 01110101110000 |30000 ------------------------------------------------- ------------ --------------------- = 1 0010011111000 |9464
Molemmilla laskuilla ei ole erityisominaisuuksia.Koska vain viimeiset 16 numeroa havaitaan (2byte = 16 -bittinen), 1 poistetaan toisessa laskussa ennen pystysuoraa viivaa, mikä tarkoittaa, että tulos (desimaalin oikeinkirjoituksessa) 9464 ja ei 75 000 onallekirjoittamaton lyhyt
-In -ganz -luku vähennettiin 30 000 kukin:
Vähennys kaksoisjärjestelmässäallekirjoittamaton lyhyt
Data -symbolina 3 | 001001111000 |9464 - | 011101100110000 |30000 ------------------------------------------------- ------ ---------------------------- = ... 1 | 10101111001000 |45000 Laskenta 4 | 10101111001000 |45000 - | 01110101110000 |30000 ------------------------------------------------- --- ------------------------- = | 00111010011000 |15000
Tässä tapauksessa toinen lasku on huomaamaton.Ensimmäisessä laskussa toisaalta pienemmältä vähennetään suuri määrä, mikä johtaisi negatiiviseen tulokseen - tai parempaan -, koska alaraja on tässä tapauksessa 0.Tämä ei missään nimessä ole vain kaksoislukujen tapaus.Jos desimaalijärjestelmässä vedät suuren määrän pienempää kirjallisen vähennysten tavanomaisten sääntöjen mukaan, saat samanlaisen tuloksen:
24-31 ------------ Markit ... 1 ------------ = ... 993
Ohjelma sisältää allekirjoitetun kokonaisluvunlyhyt
-Muuntaiset, myös neljä laskua.Heidän kaksoisesitys on hyvin tuttu:
Lisäys kaksoisjärjestelmäänlyhyt
Data -symbolina 1 | 0111010011000 |15000 + | 0 | 1110100110000 |30000 ------------------------------------------------- ----------- ----------------------- = | 1 | 0101111001000 |-20536 Laskenta 2 |-20536 + | 0 | 1110100110000 |30000 ------------------------------------------------- --------------------- ------------------------- = 1 | | 010011111000 |9464 Vähennys kaksoisjärjestelmässälyhyt
Data -symbolissa 3 | 010011111000 |9464 - | 0 | 1110100110000 |30000 ------------------------------------------------- ------------ -------------------------------- = ... 1 | 0101111001000 |-20536 Laskenta 4 |-20536 - | 0 | 1110100110000 |30000 ------------------------------------------------- --- --------------------------- = | 0 |15000
Kaksinumero ovat täsmälleen samat koko ajan, ainoa ero on, että negatiiviset luvutKahden täydennys-juhlat.Tämä johtaa muuttuneeseen esitykseen desimaalijärjestelmässä.
Yleensä on parempi, jos asetat tietotyyppien tarkan koon.Tätä varten otsikon oncstdint
integroitu.Siinä alias-nimet on määritelty sisäänrakennetuille tietotyypeille:
std:::int8_t
valinnainenstd:::int16_t
valinnainenstd:::int32_t
valinnainenstd:::int64_t
valinnainenstd:::int_fast8_t
std:::int_fast16_t
std:::int_fast32_t
std:::int_fast64_t
std:::int_least8_t
std:::int_least16_t
std:::int_least32_t
std:::int_least64_t
std:::intmax_t
std:::intptr_t
valinnainenstd:::uint8_t
valinnainenstd:::uint16_t
valinnainenstd:::uint32_t
valinnainenstd:::uint64_t
valinnainenstd:::uint_fast8_t
std:::uint_fast16_t
std:::uint_fast32_t
std:::uint_fast64_t
std:::uint_least8_t
std:::uint_least16_t
std:::uint_least32_t
std:::uint_least64_t
std:::uintmax_t
std:::uintptr_t
valinnainen
Kaikki tietotyypitint
Aloita, seisoaallekirjoitettu
Tietotyypit, kaikki kukauina
aloittaa jtkallekirjoittamaton
Tietotyypit."Valinnaisella" merkityt tietotyypit määritetään vain, jos alusta tukee niitä luonnollisesti.Tämä on kuitenkin aina edellä viitattujen järjestelmien tapauksessa.Ongelmia voi tapahtua vain mikro -ohjaimissa tai vastaavissa.
Kuollavähiten
-Päivätyypit vastaavat pienintä kaveria, jolla on ainakin yhtä monta bittiänopeasti
-Katsutyyppiä nopein tietotyyppi, jolla on vähintään yhtä monta bittiä.Semax
-Päivätyypit vastaavat suurinta käytettävissä olevaa tietotyyppiä.Septr
-Päivätyypeillä on täsmälleen yhtä monta osoitinta (katso lukuosoitin) ja siksi ne ovat myös saatavilla vain, jos laitteisto tukee vastaavaa kokonaislukutietotyyppiä.
Pääsääntöisesti on järkevin käyttää tarkkoja tietotyyppejä, ts.std:::uint16_t
Jos haluat tietotyypin, jossa on 16 -bittinen ja joka on merkityksetön.Senopeasti
-Tatiittityyppejä voidaan käyttää nopeuden optimointiin toimintojen sisällä tarvittaessa.
Liukuva[[Muokata-
Liukuva pilkkumuuttuja muistaa tietyn määrän numeroita ja pilkujen sijainnin.Tietäminen tällaisen määrän sisäisestä rakenteesta on todennäköisesti harvoin tai sitä ei koskaan tarvita, joten tässä vaiheessa se onWikipedia -artikkeli Gleit -pilkujen numeroistaviitattu.C ++: ssa käytät liukuvia pilkuja/muuttujia aritmeettiselle pilkkujen lukumäärällä.Liukuvien pilkujen numeroille on kolme tietotyyppiä, jotka on lueteltu seuraavassa taulukossa niiden tavallisilla arvoilla:
Tyypillinen | Varastotila | Arvoalue | Pienin positiivinen luku | tarkkuus |
---|---|---|---|---|
kellua | 4 -byttte | 6 sijaintia | ||
kaksinkertainen | 8byte | 12 asemaa | ||
pitkä kaksinkertainen | 10Byte | 18 asemaa |
Liukuvan commadate -tyypin valinta on vähemmän yksinkertainen kuin kokonaisluku.Jos et tiedä tarkalleen mitä ottaa, onkaksinkertainen
Yleensä hyvä valinta.Kun sinulla on tarpeeksi kokemusta, sinun on helpompi arvioidakellua
taipitkä kaksinkertainen
Ehkä parempi valinta ongelmaan.
muuttujat[[Muokata-
Ennen kuin muuttujaa voidaan käyttää, se on ilmoitettava kääntäjälle.Tätä kutsutaan muuttujien julistukseksi.Muuttujan todellista luomista, niin että kääntäjän tallennustilavarantoja kutsutaan määritelmään.Määritelmä on aina ilmoitus, ja muuttujien kanssa ero ilmoituksen ja määritelmän välillä on hiukan liian monimutkainen selittämään sitä tässä vaiheessa.Opi ensin termit toimintojen yhteydessä ja myöhemmin myös muuttujille.Sinun on kuitenkin jo muistettava, että käyttämämme muuttujat ovat aina määritelmiä.Tämä on tärkeää siinä mielessä, että määritelmä voidaan kirjoittaa vain kerran, kun taas julistus voidaan suorittaa mahdollisimman usein.Vertailun todelliseen maailmaan haluamme tarkastella uuden elämän syntymistä.Voit kertoa niin usein kuin haluat, että tietty lapsi syntyy.Itse asiassa tämä voi tapahtua vain kerran.Edellisessä luvussa meillä on jo tyypin muuttujiaint
odotettu.Nyt sinun tulisi oppia, kuinka muuttujat luodaan C ++: een.Yleinen syntaksi on:
Syntaksi:
««Tietotyyppi» ««Nimi»;
"Ei-C ++ -koodi", "valinnainen"
On myös mahdollista luoda useita samantyyppisiä muuttujia peräkkäin:
Syntaksi:
««Tietotyyppi» ««Muuttuja1»- ««Muuttuja2»- ««Muuttuja3»;
"Ei-C ++ -koodi", "valinnainen"
Voit myös antaa alkuperäisen arvon alkuperäisen arvon, tätä kutsutaan alustukseksi.Alustamisissa on kaksi syntaktista mahdollisuutta (oikeinkirjoituksia), jotka käyttävät aint
Muuttuja on näytettävä:
int määrä=100; // Mahdollisuus numero 1int määrä(100) // Mahdollisuus 2
Ensimmäinen variantti on laajalle levinnyt, mutta ei välttämättä parempi.C ++: n perustavanlaatuisilla tietotyypeillä ei ole merkitystä, mitä varianttia käytät, mutta monimutkaisemmille tietotyypeille (luokat) sekaannus määritysoperaattori voi tapahtua, jos käytät mahdollisuutta 1.Opit tuntemaan tarkan eron alustamisen ja tehtävän välillä heti, kun kyse on luokista.Tällä hetkellä sinun tulee valita yksi kahdesta variantista.Suuri jakauma ja siihen liittyvä intuitiivinen käyttö puhuvat mahdollisuudesta 1.Tässä kirjassa käytämme tätä ensimmäistä menetelmää ja annamme luokkien yhteydessä myös suosituksen, kun tämä menetelmä voi lisätä lähdekoodin parempaa katsausta.Toisaalta mahdollisuudessa 2 puhuu, että tämä syntaksi on aina voimassa alustuksille.Lisäksi tämä menetelmä tekee selväksi, että se on alustaminen.
Alkuarvojen muuttujat voidaan tietenkin luoda myös peräkkäin, mikäli niillä on sama tietotyyppi, mutta se ei ole suositeltavaa selkeyden vuoksi.
int yli(77), numero 2- Naarmu=58; // kolme int-muuttujaa, joista kahdella alkuperäisellä arvolla on
Jos et anna alkuperäistä arvoa alkuperäisille muuttujille, sinun on määritettävä sinulle arvo myöhemmin ohjelmassa ennen kuin työskentelet sen kanssa (ts. Laske se tai sinulla on sisältötulos).Jos sinulla ei ole tällaisen muuttujan arvoa ja käytä sitä, sisältö voi olla satunnainen.Tarkkaan ottaen silloin bittisekvenssi seisoi varastossa, jossa muuttujasi luotiin.C ++ -säännöissä on sääntöjä, joissa kääntäjä alustaa muuttujan implisiittisesti ilman nimenomaista alustusta ja kun nykyinen muistin sisältö yksinkertaisesti pysähtyy.Nämä säännöt ovat kuitenkin niin monimutkaisia, että niitä ei kannata muistaa.Koska jos toinen ohjelmoija lukee koodisi, hänen on myös tiedettävä säännöt koodin ymmärtämiseksi välittömästi.Seuraava pieni ohjelma osoittaa tapauksen, jossa C ++ toteaa, että implisiittistä alustusta ei tapahdu 0: ssa.
#sisältää// Syöttö/lähtöint pää-() { int määrä; // Kokonaislukumuuttuja kaksinkertainen Pilkku numero1- comezahl2; // gleitkommvariables hiiltyä merkki; // Allekirjoittaa muuttuja std:::nyrkkeily << "Numero:" << määrä << std:::endl // arvojen painos << "Pilkku numero1:" << Pilkku numero1 << std:::endl // mikä kuitenkin << "Comzahl2:" << comezahl2 << std:::endl // ei korjattu << "Kyltti:" << merkki << std:::endl; // tuli}
tulos-
Numero: -1211024315Lehti1: 4.85875E-270Hämmästyttävä: s. 32394 J-39Merkki: f
Lähtö voi olla erilainen jokaisen ohjelman suorittamisen yhteydessä.Jos näin ei ole, samat arvot ovat sattumalta vain muistin pisteessä, jonka vastaava muuttuja todistaa.Tietokoneesi uudelleenkäynnistyksen jälkeen viimeistään on todennäköisesti erilainen ongelma.Esimerkiksi on järkevää antaa muuttujia, jos ne olivatstd:::elokuvateatteri
Arvon lukeminen muuttujassa.Siitä huolimatta se ei aiheuta vaurioita tässä tapauksessa, jos alustat muuttujat 0: lla 0: lla.
#sisältää// Syöttö/lähtö int pää-() { int määrä; // Kokonaislukumuuttuja kaksinkertainen Pilkku numero1- comezahl2; // gleitkommvariables hiiltyä merkki; // Allekirjoittaa muuttuja std:::nyrkkeily << "Antakaa kokonaisluku erikseen tiloilla, kaksi pilkkua" "Ja merkki:\ n"; std:::elokuvateatteri >> määrä // Kirjoita arvot >> Pilkku numero1 //, jolla neljä >> comezahl2 // muuttuja täytetty >> merkki; // tulla std:::nyrkkeily << "Numero:" << määrä << std:::endl // arvojen painos << "Pilkku numero1:" << Pilkku numero1 << std:::endl // kumpi ennen << "Comzahl2:" << comezahl2 << std:::endl // astui sisään << "Kyltti:" << merkki << std:::endl; // tuli}
tulos-
Kirjoita kokonaisluku, kaksi pilkku- ja merkkiä välilyönteillä erikseen:Käyttäjän syöttö: 6 8,4 6,0 gNumero: 6Pilkku numero1: 8.4Comezahl2: 6Merkki: g
Vakio[[Muokata-
Kuten edellä on jo kuvattu, vakiot ovat muuttujia, jotka eivät muuta niiden arvoa.Tästä seuraa, että vakio voidaan antaa arvo vain tarkalleen kerran;C ++: ssa tämä on alustettava alkuperäisellä arvolla, muuten heillä olisi vakio, jolla on satunnainen arvo ja sillä on tuskin mitään järkeä.Avainsana muuttujan tekemiseksi vakiona onkonsertti
.Se kuuluu aina siihen, mikä siitä on jäljellä, ellei hänestä ole mitään jäljellä, niin 'const' kuuluu oikealla puolella olevaan termiin.Tämä kuulostaa monimutkaiselta, mutta se ei oikeastaan ole ollenkaan.Meille se tarkoittaa vain sitä, että sinulla on kaksi tapaa tehdä muuttujasta vakio:
konsertti int määrä(400) // Vaihtoehtoisesti: const int numero = 400;// taiint konsertti määrä(400) // Vaihtoehtoisesti: int const Number = 400;
Molemmilla on sama vaikutus, jälleen ensimmäinen variantti on laajalle levinnyt ja jälleen kerran monimutkaisempien tietotyyppien paremman luettavuuden toinen variantti (osoitimien taukot vakiona jäsenfunktioissa ...).Valitse parempaan tapaan ja käytä sitä.On tärkeää, että pysyt totta variantille, josta valitset, ainakin projektin ajan.Koska koodia, jossa kirjoitustyyli muuttuu jatkuvasti, on vaikeampaa lukea.
Kirjaimet ja niiden tietotyypit[[Muokata-
EräsKirjaimellisestion merkki lähdekoodista, joka osoittaa tietyn arvon ja jolla on yksi yllä kuvattujen tietotyyppien.
#sisältää// Syöttö/lähtöint pää-() { std:::nyrkkeily << 100 << std:::endl // 100 on int-literaal << 4.7 << std:::endl // 4.7 on kaksinkertainen kirjaimellinen << 'H' << std:::endl // 'H' on char -kirjaimellinen << totta << std:::endl; // tosi on bool kirjaimellinen}
tulos-
1004.7h1
Antaessaan on huomattava, että Boolen arvot 0 (väärä) tai 1 (totta).
Tietotyypin automaattinen määrittäminen[[Muokata-
Koska tyypin määrittäminen kokonaislukuarvolle on jonkin verran vaikeampaa kuin muiden kanssa, käsittelemme niitä äskettäin.Liukuvan muodikkaiden kirjaimien tapauksessa on määritetty, että se onkaksinkertainen
-Walen toimii.Liukuva -tasaisen saamiseksi erityyppisellä tyypillä on välttämätöntä niin kutsuttu jälkiliite.
5.0 // kaksinkertainenMinä // kellua2.6f // kelluay. // pitkä kaksinkertainen4,0L // pitkä kaksinkertainen
Numero pilkulla (.
Joten) on akaksinkertainen
-Arvo.Seuraa numeroaf
tai aF
Tuleeko hänestä yksikellua
-arvo ja seuraa häntälens
tai aLens
Tuleeko hänestä yksipitkä kaksinkertainen
-Arvo.Sleit -pisteitä voidaan käyttää myöstieteellinen oikeinkirjoitusedustettuna.
KhZ.ze-zZ -z4.A-4 F
Kuten kaksi viimeistä esimerkkiä osoittavat, tietotyypin jälkiliitteitä voidaan käyttää myös.
Saada merkki tai merkkijonoketjuchar16_t
tai.char32_t
Merkitsemiseksi laitat pienenoa
tai isoOa
Eteenpäin.Puolestawchar_t
käytät isoaLens
.
'A' // charoa'B' // char16_tOa'B' // char32_tLens'B' // wchar_t"Olen teksti" // char const*oa"Olen teksti" // char16_t const*Oa"Olen teksti" // char32_t const*Lens"Olen teksti" // wchar_t const*
Mikä tähti (*
) Kommentin tietotyypin takana saat selville myöhemmässä luvussa.bool
voi hyväksyä vain kaksi ehtoa, vastaavasti niitä on vain kaksibool
-Lite:totta
javäärä
.
Nyt kokonaislukuille.Numeroiden desimaalin tarkkuudella on myös mahdollisuusBinääri-OctalesjaHeksadesimaaliKuvaus.Merkitys numero binaarina, a0 -b -
tai0 -B -
edeltävä, vain Oktalille0 -
(Nolla) edelsi ja heksadesimaaliluku0 -x
tai0 -X
edeltävä.Suuri/pieni kuvaus heksadesimaalisista numeroistaeräs
bisf
ei haittaa.
756 // Desimaali, desimaali: 7560B10 // binaari, desimaali: 20B111 // binaari, desimaali: 7046 // Oktaali, desimaali: 380757 // Octal, desimaali: 4950xffff // heksadetsimal, dismimal: 655350x1234abcd // heksadetsimal, dismimal: 305441741
Tietotyyppi määritetään arvon koon mukaan, jolloin seuraavaa tilausta sovelletaan:int
-allekirjoittamaton int
-pitkä
-allekirjoittamaton pitkä
-pitkä pitkä
-allekirjoittamaton pitkä pitkä
.Lisäksi jokainen kokonaisluku voi nimenomaisesti jälkiliitteenoa
taiOa
puolestaallekirjoittamaton
jalens
taiLens
puolestapitkä
tai all
taiLl
puolestapitkä pitkä
olla kiinnitetty.Tilaus muuttuu jälkiliitteiden määrittelemien kriteerien mukaisesti.
selkeämpi[[Muokata-
On myös mahdollista tehdä kokonaisluku kirjaimellisesti missään paikoissa merkin kautta'
Erottaa yleiskatsauksen parantamiseksi.Tämä voi olla erityisen hyödyllistä binaarilateroille, koska ne ovat usein erittäin pitkiä.
9'756'432'108 // 'tuhannesta erottimesta978'3'446'43981'8 // 'ISBN -numeron erotusmerkkinä0B1111'0000'1010'0101 // 'erottelomerkkinä 16 -bittiselle arvolle 4 ryhmällä
Tarvitset todennäköisesti harvoin tietotyyppien tietoa litroista, joten riittää "kuullessasi siitä" ja tarvittaessa sen uudelleen.
Tiedät nyt C ++: n tietotyypit ja sinulla on joint
-Muariat lasketaan.Tässä luvussa saat selville, kuinka odottaa muuttujia erityyppisiä.Joten se on vähemmän itse tuloksesta kuin paljon enemmän siitä, mikä tulostietotyyppi on.
Täysin[[Muokata-
Kokonaislukujen laskenta on helppo ymmärtää."Pienet" tietotyypit ovat niinint
käsitellään.Suurimpien tietotyyppi päättää tulostyypistä.Seuraava luettelo näyttää yhteydet:
char + char => int |wchar_t + char => intchar + wchar_t => int |wchar_t + wchar_t => intchar + allekirjoitettu char => int |wchar_t + allekirjoitettu char => intchar + allekirjoittamaton char => int |wchar_t + allekirjoittamaton char => intchar + lyhyt => int |wchar_t + lyhyt => intchar + allekirjoittamaton lyhyt => int |wchar_t + allekirjoittamaton lyhyt => intchar + int => int |wchar_t + int => intchar + allekirjoittamaton int => allekirjoittamaton int |wchar_t + allekirjoittamaton int => allekirjoittamaton intchar + pitkä => pitkä |wchar_t + pitkä => longchar + allekirjoittamaton pitkä => allekirjoittamaton pitkä |wchar_t + allekirjoittamaton pitkä => allekirjoittamaton pitkäaikaiset char + char => int |allekirjoittamaton char + char => intSIGNED CHAR + wchar_t => int |allekirjoittamaton char + wchar_t => intSIGNED CHAR + allekirjoitettu char => int |allekirjoittamaton char + allekirjoitettu char => allekirjoitettu char + allekirjoittamaton char => int |allekirjoittamaton char + allekirjoittamaton char => allekirjoitettu char + lyhyt => int |allekirjoittamaton char + lyhyt => allekirjoitettu char + allekirjoittamaton lyhyt => int |allekirjoittamaton char + allekirjoittamaton lyhyt => allekirjoitettu char + int => int |allekirjoittamaton char + int => allekirjoitettu char + allekirjoittamaton int => allekirjoittamaton int |allekirjoittamaton char + allekirjoittamaton int => allekirjoittamaton intStrated char + pitkä => pitkä |allekirjoittamaton char + pitkä => pitkään allekirjoitettu char + allekirjoittamaton pitkä => allekirjoittamaton pitkä |Allekirjoittamaton char + allekirjoittamaton pitkä => allekirjoittamaton pitkäpoisto + char => int |allekirjoittamaton lyhyt + char => inhothort + wchar_t => int |allekirjoittamaton lyhyt + wchar_t => inhShort + allekirjoitettu char => int |Allekirjoittamaton lyhyt + allekirjoitettu char => inhort + allekirjoittamaton char => int |Allekirjoittamaton lyhyt + allekirjoittamaton char => inhort + lyhyt => int |allekirjoittamaton lyhyt + lyhyt => inhort + allekirjoittamaton lyhyt => int |allekirjoittamaton lyhyt + allekirjoittamaton lyhyt => inhort + int => int |allekirjoittamaton lyhyt + int => inhort + allekirjoittamaton int => allekirjoittamaton int |allekirjoittamaton lyhyt + allekirjoittamaton int => allekirjoittamaton intHort + pitkä => pitkä |Allekirjoittamaton lyhyt + pitkä => Longshort + allekirjoittamaton pitkä => allekirjoittamaton pitkä |allekirjoittamaton lyhyt + allekirjoittamaton pitkä => allekirjoittamaton longint + char => int |allekirjoittamaton int + char => allekirjoittamaton intInt + wchar_t => int |allekirjoittamaton int + wchar_t => allekirjoittamaton intint + allekirjoitettu char => int |allekirjoittamaton int + allekirjoitettu char => allekirjoittamaton inttint + allekirjoittamaton char => int |allekirjoittamaton int + allekirjoittamaton char => allekirjoittamaton inttint + lyhyt => int |allekirjoittamaton int + lyhyt => allekirjoittamaton inttint + allekirjoittamaton lyhyt => int |allekirjoittamaton int + allekirjoittamaton lyhyt => allekirjoittamaton intint + int => int |allekirjoittamaton int + int => allekirjoittamaton intri + allekirjoittamaton int => allekirjoittamaton int |allekirjoittamaton int + allekirjoittamaton int => allekirjoittamaton intinti + pitkä => pitkä |Allekirjoittamaton int + pitkä => pitkä oder allekirjoittamaton LongInt + allekirjoittamaton pitkä => allekirjoittamaton pitkä |allekirjoittamaton int + allekirjoittamaton pitkä => allekirjoittamaton pitkäaikainen + char => pitkä |allekirjoittamaton pitkä + char => allekirjoittamaton pitkäaikainen + wchar_t => pitkä |allekirjoittamaton pitkä + wchar_t => allekirjoittamaton pitkäaikainen + allekirjoitettu char => pitkä |Allekirjoittamaton pitkä + allekirjoitettu char => allekirjoittamaton pitkäaikainen + allekirjoittamaton char => pitkä |Allekirjoittamaton pitkä + allekirjoittamaton char => allekirjoittamaton pitkäaikainen + lyhyt => pitkä |allekirjoittamaton pitkä + lyhyt => allekirjoittamaton pitkäaikainen + allekirjoittamaton lyhyt => pitkä |Allekirjoittamaton pitkä + allekirjoittamaton lyhyt => allekirjoittamaton pitkäaikainen + int => pitkä |allekirjoittamaton pitkä + int => allekirjoittamaton pitkäaikainen + allekirjoittamaton int => allekirjoittamaton pitkä |Allekirjoittamaton pitkä + allekirjoittamaton int => allekirjoittamaton pitkäaikainen + pitkä => pitkä |Allekirjoittamaton pitkä + pitkä => allekirjoittamaton pitkäaikainen + allekirjoittamaton pitkä => allekirjoittamaton pitkä |allekirjoittamaton pitkä + allekirjoittamaton pitkä => allekirjoittamaton pitkä
Tosin tämä näyttää olevan ylivoimainen, mutta sitä ei oikeastaan ole vaikea ymmärtää.Jokaisella aritmeettisella operaatiolla jokaisella kahdella operandilla ja laskun seurauksena on tietotyyppi:
#sisältääint pää-() { hiiltyä yli=22; lyhyt numero 2=40; std:::nyrkkeily << yli * numero 2 << std:::endl; // 22 * 40 = 880 // char + lyhyt => int}
Voiteluaine[[Muokata-
Kun lasketaan liukuvilla pilkuilla, samoja sääntöjä sovelletaan periaatteessa kuin kokonaislukuja.Tulostyyppi vastaa myös operandin tyyppiä "suuremman" kaverin kanssa.Nouseva järjestys on:kellua
-kaksinkertainen
-pitkä kaksinkertainen
.Joten se pätee:
Float + kelluva => floatfloat + kaksinkertainen => kaksoisfloat + pitkä kaksinkertainen => pitkä kaksinkertainen tuplari + float => kaksinkertainen + kaksinkertainen => kaksinkertainen + pitkä kaksinkertainen => pitkä doubblong kaksinkertainen + kellu => pitkä doubblong kaksinkertainen + kaksinkertainen => pitkä doubblelong kaksois+ pitkä kaksinkertainen => pitkä kaksinkertainen
Valu[[Muokata-
Tässä yhteydessä valu tarkoittaa tietotyypin muuttamista toiseen.Tämän tyyppinen muuntaminen voi tapahtua sekä automaattisesti (implisiittisesti) että ohjelmoijan määrittelemä (nimenomaisesti).
Implisiittinen tyyppimuunnos[[Muokata-
Heillä oli jo paljon tekemistä implisiittisen tyyppisen muuntamisen kanssa, koska sitä voidaan odottaa vain numeroilla, joilla on samantyyppinen.
Esimerkkejä:
char + int => int |int + int => intShort + allekirjoittamaton int => allekirjoittamaton int |allekirjoittamaton int + allekirjoittamaton int => allekirjoittamaton intfloat + kaksinkertainen => kaksinkertainen |kaksinkertainen + kaksinkertainen => kaksinkertainen
Vähittäiskaupan säännöt[[Muokata-
Monet binaariset operaattorit, jotka odottavat aritmeettisia tai luettelo -operaattoreita, aiheuttavat tuloksia ja johtavat tuloksiin samalla tavalla.Tarkoituksena on löytää yhteinen tulostyyppi.Tätä mallia kutsutaan "tavanomaisiksi aritmeettisiksi muunnoiksi", jotka on määritelty seuraavasti:
"Dia Comma":
- Jos tyyppinen operandi
pitkä kaksinkertainen
on, niin toinen on myöspitkä kaksinkertainen
muunnetaan. - Muuten, jos tyyppinen operandi
kaksinkertainen
on, niin toinen on myöskaksinkertainen
muunnetaan. - Muuten, jos tyyppinen operandi
kellua
on, niin toinen on myöskellua
muunnetaan.
Jos voiteluainetyyppiä ei ole mukana, seuraavia kokonaislukumuunnoksia sovelletaan molempiin operandeihin:
- Jos tyyppinen operandi
allekirjoittamaton pitkä
on, niin toinen on myösallekirjoittamaton pitkä
muunnetaan. - Muuten, jos tyyppinen operandi
pitkä
ja toinen tyyppiallekirjoittamaton int
sitten, jos apitkä
Kaikki yhden arvotallekirjoittamaton int
voi edustaaallekirjoittamaton int
Myös operandpitkä
muuttunut;Muuten molemmat operandit ovat liianallekirjoittamaton pitkä
muunnetaan. - Muuten, jos tyyppinen operandi
pitkä
on, niin toinen on myöspitkä
muunnetaan. - Muuten, jos tyyppinen operandi
allekirjoittamaton int
on, niin toinen on myösallekirjoittamaton int
muunnetaan.
Huomaa: Ainoa jäljellä oleva tapaus on, että molemmat tyypin operandit ovat.
Nämä säännöt asetettiin siten, että tietotyyppi muunnetaan aina erilaiseksi tietotyypiksi "suuremmalla" arvoalueella.Tämä varmistaa, että arvotappioita ei aiheudu nousun noususta.Kuitenkin muuntaessasi kokonaislukujakellua
-Walenin pyöristämisvirheitä esiintyy:
Esimerkissä, alkaenkellua
päättyi 32 bittiä.
std:::nyrkkeily << "17000000 + 1,0F =" << std:::kiinteä << 17000000 Tai 1,0f << std:::endl;
tulos-
17000000 + 1,0F = 17000000.000000
Laskelmaa varten molemmat operandit ovat ensin tietotyypissäkellua
muunnetaan ja lisätty sitten.Tulos on jälleenkellua
Ja siksi ei pysty säästämään 17 miljoonan numeron määrää tarvittavalla tarkkuudella 17000 000 - 17000001 erottamiseksi.Lisäyksen tulos on siis jälleen 1700000.
Nimenomainen tyyppimuunnos[[Muokata-
C ++: ssa on kaksi vaihtoehtoa.Toisaalta C: stä otettu näyttelijä(Tyypillinen-AKisko
Ja toisaalta neljä (uusi) C ++ -valtaa.
staattinen< Kohdetyyppi -(Muuttuva-Aconst_cast< Kohdetyyppi -(Muuttuva-Adynaaminen< Kohdetyyppi -(Muuttuva-Atulkita uudelleen< Kohdetyyppi -(Muuttuva-A
Tipp
Kohdetyypin ja terävien kiinnikkeiden väliset tilat eivät ole ehdottoman välttämättömiä, mutta sinun pitäisi tottua tähän merkintään.Varsinkin jos työskentelet myöhemmin mallejen tai nimen huoneiden kanssa, on hyödyllistä eristää tietotyypit hiukan ympäristöstäsi.Asiaankuuluvissa paikoissa ne ovat edelleen huomautuneet muuten mahdollisille epäselvyyksille.
Aihe selitetään yksityiskohtaisemmin myöhemmin ...
Tällä hetkellä tarvitset vainstaattinen
.LuvussaValaistus.PäälläCastJos tämä luku on myös vastaanotettu, voit jo muistaa, että sinun ei pitäisi käyttää sitä.Tietysti C ++ -ohjelmoijana sinun on silti tunnettava ne, jos sinun pitäisi törmätä siihen.
Täysin numero- ja liukupisteiden numerot[[Muokata-
Jos kokonaisluku ja liukupiste lasketaan, saman tyyppinen tulos on samantyyppinen kuin liukupisteen numero.
Laskea merkkejä[[Muokata-
Merkkien luottaminen on erityisen käytännöllistä.Esimerkiksi koko aakkosen tulostaminen yksinkertaisesti lasketaan kirjaimesta'A'
kunnes lopulta'Z'
-
#sisältääint pää-() { puolesta(hiiltyä minä = 'A'; minä <= 'Z'; ++minä) { std:::nyrkkeily << minä; }}
tulos-
Abcdefghijklmnopqrstuvwxyz
Luku lue lue yllä olevasta lähdekoodista selitysJauhaa.
Jos käytät binaarioperaattoreita merkkeihin, tulos on (ainakin) tyypinint
.Seuraavassa esimerkissä liittyvä kirjeen sijastaAsciiAnnettu arvo.Joten viettääksesi kyltin uudelleen, sinun on palattava piirustustyyppiinValeta.(Huomaa seuraavassa esimerkissä, että muuttujaminä
- Päinvastoin kuin edellinen esimerkki - ei tyyppihiiltyä
On):
#sisältääint pää-() { hiiltyä merkki = 'A'; puolesta(int minä = 0 -; minä < 26; ++minä) { std:::nyrkkeily << merkki Tai minä << '' '' '' '' '; // tulos int } std:::nyrkkeily << std:::endl; puolesta(int minä = 0 -; minä < 26; ++minä) { std:::nyrkkeily << staattinen< hiiltyä -(merkki Tai minä) // tulos char }}
tulos-
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90Abcdefghijklmnopqrstuvwxyz
Haara (ehdollinen ohje,ehdollinen lausunto) Osoitetaan ohjelman jakaminen useisiin polkuihin.Esimerkiksi käyttäjän merkinnät voidaan reagoida.Ohjelmaprosessi muuttuu käyttäjän sisäänkäynnin mukaan.
Putoaminen[[Muokata-
Purktiot ovat avainsanallajos
alkoi.Yksinkertaisimmassa muodossa se näyttää tältä:
Syntaksi:
jos(««Kunto»-A ««Ohje»
"Ei-C ++ -koodi", "valinnainen"
JosKunto
on täytetty,Ohje
Suoritetaan, muuten se ohitetaan.Jos ei vain yksi, mutta useita ohjeita on suoritettava, ymmärrät ne{...}
Lohkotiedotuksen muodostaminen:
Syntaksi:
jos(««Kunto») { ««ohjeet»}
"Ei-C ++ -koodi", "valinnainen"
KunKunto
Mitä tahansa lauseketta voidaan käyttää tuotabool
palautukset tai sen tulos on yhdessäbool
voidaan muuntaa.Kokonaisluku- ja liukuvien pilkkujen tietotyyppejä voidaan seuratabool
Muunna, sääntö on: jos numero (tarkalleen) on 0, se onväärä
arvioitu, muuten kutentotta
.
int minä;elokuvateatteri >> minä;jos(minä) { nyrkkeily << "Käyttäjä on kirjoittanut arvon 0\ n";}
Muuten[[Muokata-
Avainsanamuu
Laajentaa haaran käyttöä.Kun taas normaali (ts. Henkilö)jos
Laita tietty osa koodista, jos ehto täyttyymuu
Laajennus muun koodin suorittamiseksi, jos ehtoa ei täytetä.
int minä;elokuvateatteri >> minä;jos (minä-A nyrkkeily << "Olet antanut arvon 0!\ n";muu nyrkkeily << "Annoit 0!\ n";
Tietysti myös täällä, molemmatjos
Sekämuu
-Säyttö, ohjekohko.Jos tiedät Pascalin tai vastaavan ohjelmointikielen, huomaat, että ohjeet ennenmuu
on valmis puolipisteellä.Koska ajos
- taimuu
-vain yksi ohje ainataiOhjekohtoa voidaan väistämättä käyttää heti sen jälkeenmuu
pysyäjos
määritetään.
Voit myös määrittää enemmän kuin kaksi vaihtoehtoa ohjeiden haarassa:
int minä;elokuvateatteri >> minä; jos (minä == 10-A nyrkkeily << "Tulit kymmenen\ n";muu jos (minä == 11-A nyrkkeily << "Sisoit yksitoista\ n"; muu nyrkkeily << "Et ole tullut kymmenen tai yksitoista\ n";
Mitä tahansa määrää haaroita voidaan käyttäämuu jos
tapahtua.On kuitenkin tavallista valita erilainen sisennys, jos sellainen "jos
-muu
-Trumit ”laajennetaan:
int minä;elokuvateatteri >> minä; jos (minä == 10-A nyrkkeily << "Tulit kymmenen\ n";muu jos (minä == 11-A nyrkkeily << "Sisoit yksitoista\ n";muu nyrkkeily << "Et ole tullut kymmenen tai yksitoista\ n";
On myös suositeltavaa käyttää käskylohkoa jopa ohjeen aikana.Viime kädessä toiminnallisuus on aina sama, mutta tällaiset lohkot lisäävät selkeyttä ja jos haluat myöhemmin määrittää useita ohjeita sen sijaan, että määrität vain sellaisen, sinun ei tarvitse huolehtia mistään kiinnikkeistä, koska ne ovat jo käytettävissä.
int minä;elokuvateatteri >> minä; jos (minä == 10-A { nyrkkeily << "Tulit kymmenen\ n";} muu jos(minä == 11-A { nyrkkeily << "Sisoit yksitoista\ n";} muu { nyrkkeily << "Et ole tullut kymmenen tai yksitoista\ n";}
Muuten, he tapaavat usein toisen variantin sulujen sijoittamiselle:
int minä;elokuvateatteri >> minä; jos (minä == 10-A{ nyrkkeily << "Tulit kymmenen\ n";}muu{ jos (minä == 11-A { nyrkkeily << "Sisoit yksitoista\ n"; } muu { nyrkkeily << "Et ole tullut kymmenen tai yksitoista\ n"; }}
Jotkut ohjelmoijat löytävät tämän selkeämmän, mutta tälle kirjalle käytettiin variantti, jossa oli avauskiinnikkeet ilman ylimääräistä riviä.Tällä on etuna, että vähemmän tilaa tarvitaan ja koska sisällyttäminen osoittaa kuulumisen joka tapauksessa, ylimääräinen merkintä ei ole ehdottoman välttämätöntä.
Muuten, lähdetekstiviivojen sisällyttämisellä ei ole merkitystä kääntäjälle.Se on vain graafinen esitys ohjelmoijalle.Tässä kirjassa valitun neljän välilyönteen syvyys on myös valinnainen, monet ohjelmoijat käyttävät vain kahta tilaa.Toisaalta toiset ovat vakuuttuneita siitä, että kahdeksan on ihanteellinen valinta.Mutta riippumatta siitä, mitä valitset, on tärkeää, että pidät tyylisi etkä muuta tyyliäsi jatkuvasti.Tämä ei vain sekava, mutta ei myöskään näytä hyvältä.
Tipp
Jos et vaivaudu näyttämään taulukon merkkejä ja välilyöntejä tekstieditorissasi, sinun tulee käyttää taulukon merkkejä sisällyttämiseen ja kaikkeen normaalin sisennyksen takana (etäisyydestä kommenttiin).Tällä on se etu, että voit muuttaa sisennyssyvyyttä milloin tahansa määrittämällä kuinka monta tilaa vastaa välilehteä.
Haitta: Jos muokkaat tai välität lähdetekstiä eri toimittajilla, sinun on asetettava jokaiseen editoriin, minkä välilehden leveyden pitäisi olla.Sisennys pysyy aina samana tilaa käytettäessä, vaikka välilehden leveys olisi asetettava eri tavalla.
Vertailevat operaattorit[[Muokata-
Yllä olevassa esimerkissä vertailuoperaattori tuli jo==
käytettäväksi.C ++: ssa on yhteensä kuusi vertailuoperaattoria.He kukin toimittavat arvontotta
Jos kaksi operandia (jotka ovat operaattorin vasemmalla ja oikealla puolella) täyttävät vertailukriteerin, muuten arvoväärä
.
== | identtinen |
<= | on pienempi (tai) sama |
> = | on suurempi (tai) sama |
< | on pienempi |
- | on isompi |
! = | On epätasainen |
Ilmoitus
Vertailun operaattori==
Aloittelijat käyttävät usein tehtävän operaattorin kanssa=
virheellinen.Koska se on ehdottoman laillista, toimeksianto ajos
-Edellytys johtaa usein vaikeaan löytää virheitä.Tehtävä arvioidaan määritettyyn arvoon.
int eräs = 5- b - = 8;jos (eräs = b --A nyrkkeily << "5 on 8.";
tulos-
5 on 8.
"Ehto" näyttää arvonb -
muotin muuttujaeräs
(eräs = 8
).Vartenjos
Kokonaisekspressio arvioidaan (ts.8
), olitotta
keinot.
Oudon käyttäytymisen avulla tarkista aina, voiko toimeksianto -operaattori=
Tasa -arvooperaattorin sijasta==
on käytetty.
Toinen tapaus on tasa -arvooperaattori! =
Kun hän on kirjoitettu väärin (=!
).Jälkimmäiset ovat oikeastaan kaksi operaattoria, nimittäin tehtävä=
ja looginen kieltäminenVasiksi
että tutustu heti.Tämän erottamiseksi, tee vain selväksi, mitä se tarkoittaa sanoin:
! =
- Ei yhtä suuri=!
- Ei heti
Loogiset operaattorit[[Muokata-
Loogisten operaattoreiden avulla voit yhdistää useita ehtoja lausekkeeseen.C ++ tarjoaa seuraavat vaihtoehdot:
Vasiksi | Looginen ei | Tulos, jos operandi on väärä |
Th | Looginen ja | Tulos, jos molemmat operandit ovat totta |
|| | Looginen tai | Tulos, jos ainakin yksi operandi on totta (osallistava tai-A |
Operaattoreita voidaan kuvata selvästi totuuden levyillä (tässä valitussa esityksessä jokainen sarake voidaan lukea itse):
Looginen ja (Th -A | ||||
---|---|---|---|---|
eräs | totta | totta | väärä | väärä |
b - | totta | väärä | totta | väärä |
eräs Th b - | totta | väärä | väärä | väärä |
Esimerkki kolmannesta sarakkeesta:KanssaA = väärä
jab = totta
kullattuA && b -> väärä
.
Looginen tai (|| -A | ||||
---|---|---|---|---|
eräs | totta | totta | väärä | väärä |
b - | totta | väärä | totta | väärä |
eräs || b - | totta | totta | totta | väärä |
Looginen ei (Vasiksi -A | ||
---|---|---|
eräs | totta | väärä |
Vasiksieräs | väärä | totta |
Esimerkki:
int minä = 10- j - = 20;jos (minä == 10 Th j - == 10-A { nyrkkeily << "Molemmat arvot ovat kymmenen\ n";}jos (minä == 10 || j - == 10-A { nyrkkeily << "Arvo tai molemmat arvot ovat kymmenen\ n";}
tulos-
Arvo tai molemmat arvot ovat kymmenen
Luettavuuden syistä vertailulausekkeita tulisi periaatteessa ympäröimä suluissa.Siksi yllä oleva koodi näyttäisi tältä:
int minä = 10- j - = 20;jos (((minä == 10-A Th (j - == 10)) { nyrkkeily << "Molemmat arvot ovat kymmenen\ n";}jos (((minä == 10-A || (j - == 10)) { nyrkkeily << "Arvo tai molemmat arvot ovat kymmenen\ n";}
tulos-
Arvo tai molemmat arvot ovat kymmenen
MolemmatTh
-Operaattorit (logiikka ja) sekä||
-Operaattori (logiikka tai) ala-ilmaisut ovatvasemmalta oikealleArvioitu, ja vain siihen asti, kunnes tulos määritetään.Jos esim.Th
-HUSTUSEräs Th B - Th C
Ensimmäinen ehto 'A' on jo väärässä, 'b' ja 'c' ei enää tutkita, koskaTh
Kyllä kaikki olosuhteettotta
on oltava.bool
.
Siksi se löytyy satunnaisesti:
jos ( (muutuble_ist_gueltig-A Th (Muuttuja täyttää lisämahdollisuuden-A -A { / * tee jotain */ }
Voidaanko muuttuja tapaa yksityiskohtia vain tarkistaa, jos se sisältää kelvollisen arvon.Ensimmäinen pätevyyden ehto suojaa siten seuraavaa työskentelyä virheellisillä arvoilla.
Ilmoitus
Huomaa, että ja operaattori (Th
) korkeampi prioriteetti kuin Oder -operaattori (||
) on.Tämä tarkoittaa, että sinun on oltava varovainen ilmaisemalla seuraavaa.
int minä = 10- j - = 20;// Odotettu tilaus (((i == 10) || (j == 20)) && (j == 20)) && (i == 5))// todellinen järjestys ((i == 10) || (((j == 20) && (j == 20)) && (i == 5))))jos (minä == 10 || j - == 20 Th j - == 20 Th minä == 5-A { nyrkkeily << "Olen kymmenen ja viisi tai (J on kaksikymmentä ja viisi)!\ n";} muu { nyrkkeily << "En ole kymmenen tai (J on kaksikymmentä tai en viisi)!\ n";}
tulos-
Olen kymmenen ja viisi tai (J on kaksikymmentä ja viisi)!
Lähtö on väärä, koska lauseke järjestyksessä(((minä == 10-A || ((((j - == 20-A Th (j - == 20)) Th (minä == 5)))
arvioidaan.Tällaisia virheitä on erittäin vaikea löytää, joten sinun ei pitäisi tehdä niitä.Tästä syystä kärki: käytä sellaisia monimutkaisia olosuhteitaainaSulakkeet, jotka tekevät selväksi missä järjestyksessä haluat arvioida lausekkeita.Tämä on erehtymätön, ja ihmisen lukija lukee ilmaisun ja kääntäjän.Useimmat toimittajat hallitsevat niin kutsutun kiinnikkeen sovituksen, jotta voidaan tunnistaa, missä kiinnike on suljettu.Editori (automaattisesti tai tietyn pikanäppäimen kautta) korostaa sulkemiskiinnikettä.
Tipp
Jos sinulla on useitaTh
ja||
Työskentele sitten, kirjoita sitten lauseke, jota todennäköisimmin sovelletaan, jopa kaikkein halvin vasen, ts.ennenilmaista toinen.Tämä on (tosin) erittäin pieni optimointi, mutta on tilanteita, joissa se on edelleen järkevää.Esimerkiksi jos tila aNauhasuoritetaan hyvin usein.
Huomautus edistyneille lukijoille: Huomaa, että muita sääntöjä sovelletaan operaattoreihin.Kaikkien niiden, jotka eivät vielä tiedä, mitä ylivoimaisia operaattoreita ei tarvitse (vielä) huolehtia tästä huomautuksesta.
Ehdollinen ilmaisu[[Muokata-
Arvostuksia käytetään usein tehtävän tekemiseen lausekkeen arvosta riippuen.Voit tehdä sen valintaoperaattorilla? ... - ...
muotoilee myös helpommin:
mini = eräs < b - ? eräs - b -;// Vaihtoehtoisesti mennä:jos (eräs < b --A { mini = eräs;} muu { mini = b -;}
Graafisesti se näyttää tältä:
Muuttujamini
tulee pienemmäksi, kaksi arvoaeräs
jab -
määritetty.Analogisesti loogisten operaattoreiden käyttäytymisen kanssa arvioidaan vain "haaraa", että tilan arvioinnin jälkeen (olosuhteet (eräs < b -
) suoritetaan tosiasiallisesti.
Ehtooperaattoria voidaan käyttää myös seuraavasti:
(määräProsentti2-A ? painatus("outo"-A - painatus("suoraan")
Toisin kuinjos...muu
-tässä ei ole mahdollista antaa vain ohjeita riippuen ehdostamuu
-Päästä sen yksinkertaisesti pois:
jos(eräs-A tehdä(b -) //oikea(eräs-A ? tehdä(b -)//väärä
Tämä johtuu siitä, että kuntooperaattori?:
ei ole ohjausrakenne todellisessa merkityksessä.
Pikemminkin(eräs-A ? tehdä(b --A - tehdä(c)
lauseke "laskee", jolla on oltava arvojos
-voi voidaan liuottaa ohjeet loogisesti "tu-ei-polku".
Se, mitä olet tähän mennessä oppinut, sen pitäisi olla helppo harjoitus, jos sinulla on numerot yhdestä kymmeneen.Tätä ohjelma voisi näyttää:
#sisältääint pää-() { std:::nyrkkeily << "1\ n"; std:::nyrkkeily << "2\ n"; std:::nyrkkeily << "3\ n"; std:::nyrkkeily << "4\ n"; std:::nyrkkeily << "5\ n"; std:::nyrkkeily << "6\ n"; std:::nyrkkeily << "7\ n"; std:::nyrkkeily << "8\ n"; std:::nyrkkeily << "9\ n"; std:::nyrkkeily << "10\ n";}
tulos-
12345678910
Tämä ohjelma on yksinkertainen - mutta entä jos numerot tulevat tulostamaan miljoonaan?Tai mikä pahempaa - kyllä, se toimii vielä pahemmin: lähtö riippuu käyttäjän syöttämisestä.Sitten sinun on otettava suurin mahdollinen numero (allekirjoittamaton int
Yleensä 4 224,967,295) ja tarkista myös jokaisen ongelman jälkeen, saavutetaanko käyttäjän syöttämä numero.
#sisältääint pää-() { allekirjoittamaton minä = 1; // Luo 2 muuttujaa allekirjoittamaton käyttäjä = 0 -; std:::elokuvateatteri >> käyttäjä; // Käyttäjä tulee numeroon jos (minä <= käyttäjä-A { // Käyttäjän syöttö saavutettiin? std:::nyrkkeily << "1\ n"; // Numeron 1 lähtö ++minä; // Laskeluvut } muu { palata 0 -; // Sulje sovellus } jos (minä <= käyttäjä-A { // Käyttäjän syöttö saavutettiin? std:::nyrkkeily << "2\ n"; // Numeron 2 lähtö ++minä; // Laskeluvut } muu { palata 0 -; // Sulje sovellus } // ... jos (minä <= käyttäjä-A { // Käyttäjän syöttö saavutettiin? std:::nyrkkeily << "4294967295\ n"; // Numeron 4294967295 painos ++minä; // Laskeluvut } muu { palata 0 -; // Sulje sovellus } // Jos kääntäjäsi on saavutettava tämä asema, tarvitset voimakkaan // Tietokone ja vankka käyttöjärjestelmä. // ratkaistaksesi tämän ongelman vain istua seuraavassa aikakoneessa // ja tilaa tietokone vuodesta 2030!}
Kaiken kaikkiaan yli 17,1MiljarditRivikoodi.
Tässä vaiheessa silmukat tulevat peliin.Toistaiseksi kaikki ohjelmat on yksinkertaisesti käsitelty keskiarvoissa ja eri haarojen välillä on voitu seurata.Silmukan avulla voit varmistaa, että ohjelmaosa käsitellään useita kertoja.C ++ tarjoaa kolme silmukkarakennetta.Pääkontrolloitusillä aikaa
-LLOOP, jalka -kontrolloitutehdä-sillä aikaa
-LLOP ja (myös pääkontrolloitu)puolesta
-Nauha.Saat selville, mikä pää- ja jalkaohjatut silmukot ovat pian.Ehkä tiedät sen jo luvusta "Peruselementit", osiosta "aloittelijoille".
Kuollasillä aikaa
-Nauha[[Muokata-
Yksisillä aikaa
-Chreifellä on seuraava yleinen muoto:
Syntaksi:
sillä aikaa(««Kunto»-A ««Ohje»
"Ei-C ++ -koodi", "valinnainen"
Tietenkin, kuten oksien kohdalla, voit jälleen tehdä yhteenvedon useista ohjeista ohjekohdasta, koska tätä pidetään ohjeena:
Syntaksi:
sillä aikaa(««Kunto»-A { ««ohjeet»}
"Ei-C ++ -koodi", "valinnainen"
Niin kauan kuin ehto täyttyy, ohje tai käskylohko suoritetaan.Koska tämä on pääkontrolloitu silmukka,ensimmäinenArvioitu tila.Jos tämä täyttyy, näinsittenSuoritettu käsky.Jos seuraava ehdon katsaus on positiivinen, silmukan runko suoritetaan uudelleen ja niin edelleen.Jos ehtoa ei täytetä, silmukkapitoisuus ohitetaan ja jatketaan lähdekstillä silmukan jälkeen.Siksi voi tapahtua, että silmukan runko ei suoriteta ollenkaan - jos tilaa ei täytetä alussa.
Voit selvittää, mitä jalka -ohjattu silmukka tekee otsikon allatehdä-sillä aikaa
.Tämän luvun yhteenvedossa on vertailu kahdesta silmukasta.
Tipp
Kuinka olosuhteita arvioidaan, voidaan käyttää luvussa ”Oksat”Lue - edellinen luku.
Ilmoitus
Huomaa, että silmukat suoritetaan, kunnes ehtoa ei enää täyty.Joten jos et varmista, että ehto ei enää täyty silmukassa, niin sinulla on niin kutsuttuLoputon silmukka.Tuo onSilmukka(Tämä on ohjeiden nimi tai silmukan käskylohko) suoritetaan uudestaan ja uudestaan.Ohjelma voidaan lopettaa vain peruuttamalla.Yhdessä avainsanan kanssa, jonka tutustut pian, tällaista loputonta silmukkaa voidaan haluta ja järkevää (komento voi peruuttaa silmukan), mutta tämä on yleensä vahingossa.Joten jos ohjelmasi on "kaatunut", siinä mielessä "se ei enää reagoi!Kuinka kauheaa! ”, Sinulla on todennäköisesti loputon silmukka.
Mutta nyt takaisin silmukkatehtävämme 17,1 miljardilla koodilla.Koska kääntäjäsi ei vieläkään ole valmis kääntämään yllä esitettyä ratkaisua, yritämme nyt tehdä koko asian yhdelläsillä aikaa
-Loop ratkaista.
#sisältääint pää-() { allekirjoittamaton minä = 1; // Luo 2 muuttujaa allekirjoittamaton käyttäjä = 0 -; std:::elokuvateatteri >> käyttäjä; // Käyttäjä tulee numeroon sillä aikaa (minä <= käyttäjä-A { // Käyttäjän syöttö saavutettiin? std:::nyrkkeily << minä << std:::endl; // I -painos ja linjatauko minä++; // Lisää yksi kerrallaan (-> Laskeluku) }}
No, se näyttää jotenkin ylhäältä, vain melkein 4,3 miljardiajos
Ohjeet on poistettu ja niissä on yksi melkein identtinen rakenteen kanssasillä aikaa
-CHinde teki tilaa.Nyt meillä on tietysti ongelma: Super -tietokoneesi vuodesta 2020 on edelleen kiireinen kääntämällä ensimmäinen ohjelmaversio ja se todennäköisesti pysyy keksinnönsä saakka.Onneksi sinulla on edelleen vanha tietokone vuodesta 1980. Joten yritä kääntää ja suorittaa ohjelma siihen.Itse asiassa.Se toimii.On hämmästyttävää, että tällainen vanha laatikko ohittaa tietokoneen, joka sinun on toimitettava tulevaisuudesta saadaksesi maksimaalisen suorituskyvyn.
Jos sinulla on vaikeuksia ymmärtää esimerkkiä, katso numeroiden silmukkaversiota 1-10.
#sisältääint pää-() { int minä = 1; // Luo i sillä aikaa (minä <= 10-A { // Olenko vielä pienempi, 10? std:::nyrkkeily << minä << std:::endl; // I: n ja uuden linjan painos minä++; // lisään yhdellä }}
tulos-
12345678910
Joten koko asia näyttää paljon kompaktemmalta ja ehkä vielä selkeämmalta kuin ylhäältä oleva versio.Lähtö puolestaan on täysin identtinen.Täällä onminä
asetettu yhteen alussa.Joten ehto (yksi on pienempi tai kymmenen tai kymmenen) täyttyy.Silmukan runko suoritetaan."1" annetaan.Seuraava linjatauko.Sittenminä
lisääntynyt yhdellä.Sitten tarkistetaan uudelleen, täyttyykö ehto.Sielläminä
Nyt kaksi on, että tila "kaksi on pienempi tai kymmenen", koska tämä on todellinen lausunto, silmukan runko suoritetaan uudelleen.Tämä toistetaan kunnesminä
Viimeinkin on yksitoista.Edellytys on sitten "yksitoista on pienempi tai kymmenen", tämä lausunto on epäilemättä väärä.Siksi silmukan runko ohitetaan nyt ja jatketaan sen takana olevan koodin kanssa.Koska esimerkissämme ei ole enää koodia, ohjelma päättyy.
Yhteenveto:
- Lähdeteksti silmukan edessä
- Silmukka
- Täyttää:
- Silmukka
- Jatka 2: lla
- Ei täytetty:
- Jatka 3: lla
- Täyttää:
- Lähdeteksti silmukan jälkeen
Kuollatehdä-sillä aikaa
-Nauha[[Muokata-
Kuten luvattiin, tuuletamme nyt salaisuuden jalan hallitsemasta hiomista.tehdä-sillä aikaa
Jos jalkavalvottu silmukka on, ts. Ensimmäinen asia on suorittaa silmukan runko, sitten ehto tarkistetaan ja sitten ehto riippuen, runko suoritetaan uudelleen (ehto täyttyy) tai jatketaan lähteen kanssa Teksti silmukan jälkeen (ehto ei täytetty).Jalkapäällystetylle silmukkaa on ominaista se, että silmukan runko suoritetaan ainakin kerran.
Syntaksi:
tehdä ««Ohje» sillä aikaa(««Kunto»)
"Ei-C ++ -koodi", "valinnainen"
Tämän silmukan avulla löydämme harvoin yllä olevan syntaksin, koska täällä oleva silmukka runko kahden avainsanan välillätehdä
jasillä aikaa
Julkaisut, ohjekohtoa käytetään melkein aina, vaikka vain yksi ohje olisi käytettävissä.Tietysti tällä ei ole merkitystä kääntäjällesi, mutta se on selkeämpää henkilölle, joka lukee lähdetekstiä.
Syntaksi:
tehdä{ ««ohjeet»} sillä aikaa(««Kunto»)
"Ei-C ++ -koodi", "valinnainen"
Alkuperäinen jättiläinen ohjelmamme näkee yhdentehdä-sillä aikaa
Piirittää näin:
#sisältääint pää-() { allekirjoittamaton minä = 1; // Luo 2 muuttujaa allekirjoittamaton käyttäjä = 0 -; std:::elokuvateatteri >> käyttäjä; // Käyttäjä tulee numeroon tehdä { // Alku std:::nyrkkeily << minä << std:::endl; // I -painos ++minä; // Laskeluvut } sillä aikaa (minä <= käyttäjä) // Käyttäjän syöttö saavutettiin?}
Huomaat, että tämän ohjelman tulos on tulostettusillä aikaa
-Schrifeeniversio vastaa.Huomaat eron, kun syötät 0: kunsillä aikaa
Versio ei tee tulosta, tämä tarjoaa tämäntehdä-sillä aikaa
-Version "1" ja linjan linja, koska silmukka runko suoritetaan aina ensin, vasta sitten ehto tarkistetaan ja päätetään, onko se suoritettava uudelleen.
Yhteenveto:
- Lähdeteksti silmukan edessä
- Silmukka
- Silmukka
- Täytetty: Jatka 2: lla
- Ei täytetty: Jatka 4: llä
- Lähdeteksti silmukan jälkeen
Kuollapuolesta
-Nauha[[Muokata-
Kuollapuolesta
-Silmä on hiukan monimutkaisempi kuin kaksi edellistä silmukkaa.Se on jaettu osiin:
Syntaksi:
puolesta(««Alustusosa»; ««Ehdollinen osa»; ««Ohjeet»-A ««Silmukka»
"Ei-C ++ -koodi", "valinnainen"
Kuten aina, silmukan runko voi olla yksi käsky tai {} -käskylohko.Tilan kunto käyttäytyy täsmälleen kutensillä aikaa
- jatehdä-sillä aikaa
-Schand tai sanotaan melkein samalla tavalla, koska on pieni, mutta hieno ero.Sillä aikaasillä aikaa
jatehdä-sillä aikaa
Odota aina ehtoa, apuolesta
-VIEDOT EI VASTAA EDELLEEN.Jos ehtoa ei määritetä, oletetaan yksinkertaisesti, että ehto on aina täyttynyt, saat loputtoman silmukan.Saat selville, kuinka tätä käytetään järkevästi.
Voit suorittaa kaikki ohjeet käskyosassa, tätä osaa käytetään usein muuttujien laskemiseen ylös tai alas jokaisessa hiontapäässä.Tämä osoitetaan myös seuraavassa esimerkissä.On myös mahdollista määritellä useita tällaisia "korkean tai laskenta" -ohjeiden erikseen pilkkua, mutta sitä ei tehdä seuraavassa esimerkissä.Muuten, ohjeosa suoritetaan heti silmukan rungon jälkeen ja ennen seuraavaa ehto -testiä.Alustusosa on samanlainen kuin ohjeet, koska kaikki ohjeet voidaan suorittaa myös täällä.Lisäksi se on edelleen mahdollista täälläyksiTietotyypin luominen.Joten voit helposti 2int
-Variaatiot, mutta ei yhtäint
- ja ahiiltyä
-Muutos.Alustusosa suoritetaan vain kerran silmukan alussa.
Aihe selitetään yksityiskohtaisemmin myöhemmin ...
LuvussaObjektien elinkaari ja näkyvyysLisätietoja siitä, missä voit käyttää silmukan alustusosaan luotuja muuttujia.Siellä saat myös selville kuinka yksipuolesta
-LLOOP a: n avullasillä aikaa
-Sulaa voidaan "rakentaa uudelleen".
Nyt sinun on kuitenkin muistettava, että voit käyttää vain tällaista muuttujaa silmukassa, ts. Etkö enää vasemman jälkeen.
#cludeint main () {allekirjoittamaton käyttäjä = 0;// Käyttäjän syöttömuuttujat std :: cin >> käyttäjä;// Käyttäjä antaa numeron (allekirjoittamaton i = 1; i <= käyttäjä; ++ i) // for-loop std :: cout << i << std :: endl;// I} painos
Yhteenveto:
- Lähdeteksti silmukan edessä
- Alustan osa silmukasta
- Silmukka
- Täyttää:
a) Loop Hull
b) Ohjeosa
c) Jatka 3: lla - Ei täytetty: Jatka 4: llä
- Täyttää:
- Lähdeteksti silmukan jälkeen
Aihe selitetään yksityiskohtaisemmin myöhemmin ...
C ++ 11: n jälkeen on ollut toinen muotopuolesta
-Nauha.Monilla muilla ohjelmointikielillä tätä muotoa kutsutaan "ForAach" -silmukana:
Syntaksi:
For («elementti»: «säilö») «Loop Hull»
"Ei-C ++ -koodi", "valinnainen"
Kirjan tässä vaiheessa on vaikea selittää, kuinka tietorakenteita (jotka on merkitty tässä ”säiliöillä”) ei ole vielä käsitelty.Siksi se on vasta tarkemmin myöhemmin tässä muodossapuolesta
-Lieben sai.
Se voidaan nähdä siitä, että kiinnikkeiden välillä ei ole kahta puolipistettä, vaan paksusuolta.
Kuollatauko
-Ohje[[Muokata-
Nyt on aika paljastaa loputtomien silmukoiden järkevän käytön salaisuus.Setauko
-Johdistuksia käytetään silmukoissa silmukan lopettamiseksi välittömästi.Lähdetekstiä jatketaan sitten normaalisti silmukan jälkeen.tauko
Voit käyttää jokaisessa kolmessa silmukassa.Seuraava esimerkki osoittaatauko
, tämän luvun suosikkiohjelmamme perusteella.
#cludeint main () {allekirjoittamaton i = 1;// 2 muuttujaa Luo allekirjoittamaton käyttäjä = 0;Std :: cin >> käyttäjä;// Käyttäjä antaa numeron a// I ++ i: n painos;// lisää muuttujaa, jos (i> käyttäjä) tauko;// Peruuta, jos ehto täyttää}}
Voit tehdä loputtoman silmukan jokaisesta silmukasta, täälläpuolesta
-Kuoppa, joka on valittu näyttämään miltä se näyttää ilman ehtoa.Aassasillä aikaa
- taitehdä, kun
-Tie Loop voisit esimerkiksitotta
määritä ehto.Muuten, silmukka osoittaa nyt saman käyttäytymisen kuin yksitehdä, kun
-Nauha.Voit myös käyttää helposti yhtä tai kahta osaa silmukkapäästäpuolesta
-Vidosilmukka on vain tärkeä, että määrität aina kaksi puolipistettä, koska kerrot kääntäjälle, mikä on silmukkapään osa.
Nyt tiedät vähän enemmänpuolesta
, sen pitäisi olla tämän otsikon allatauko
mennä.Kuten näette, kaikki kaikki liittyvät toisiinsa, ja siten on usein vaikea luoda oikea rajaa.
Kuollajatkaa
-Ohje[[Muokata-
Toinen tärkeä avainsana silmukoille onjatkaa
.Sitä käytetään täsmälleen kutentauko
ei kuitenkaan katkaise silmukkaa kokonaan, vaan jatkaa koodiversiota silmukan rungon lopussa.Puolestasillä aikaa
jatehdä, kun
Tämä tarkoittaa ehtokoettapuolesta
-LOOP ohjeosassa.Kanssajatkaa
Joten voit ohittaa loput nykyisestä hionta -ajoista.Tarkastelemme tätä uudelleen esimerkin avulla.
#cludeint main () {allekirjoittamaton käyttäjä = 0;// Käyttäjän syöttömuuttujat std :: cin >> käyttäjä;// Käyttäjä antaa numeron (allekirjoittamaton i = 1; i <= käyttäjä; ++ i) {// for-silmukka, jos (i% 2 == 0) jatka;// Ohita kaikki suorat numerot std :: cout << i << std :: endl;// I}} painos
Tässä on vain tangradeja, koskaProsentti
-Operaattori (toimittaa loput kokonaislukujaosta) kaikissa suorissa numeroissa (jos jaat 2 loput, vain 0 tai 1 on mahdollista) 0 ja siten takaisin ja siten takaisin ja sitenjatkaa
on esitetty.
Tietysti voit tehdä sen eri tavalla.Mutta Roomaan johtavan ohjelmoinnin on monia tapoja, kuten tässä luvussa, se on jo todistettu eri silmukoiden perusteella.Valitettavasti on vielä enemmän tapoja, jotka johtavat Rooman ohi suoraan ... mutta tässä on polku esimerkistä esimerkistä, joka johtaa turvallisesti Roomaan:
#cludeint main () {allekirjoittamaton int käyttäjä = 0;// Käyttäjän syöttömuuttujat std :: cin >> käyttäjä;// Käyttäjä antaa numeron (allekirjoittamaton i = 1; i <= käyttäjä; i += 2) // silmukka 2 vaiheella std :: cout << i << std :: endl;// I} painos
Jäsennelty ohjelmointi[[Muokata-
Ohjeet 'tauko' ja 'jatkuu' pidetään "saastainen", ne melkein aina on vaikea ymmärtää ohjelmaa.
Luvun kiinnitys[[Muokata-
Tämän luvun liitteestä löydät:
- Tehtävät ja niihin liittyvät näytteen ratkaisut.
Tehtävät
Kirjoita pieni peli silmukan avulla.Peli on:
- Alussa pelaaja kirjoitti numeroalueelle.(Esimerkiksi: 1-100)
- Pelaajan on muistettava numero tällä alueella (syötetyt rajanumerot eivät ole sallittuja).
- Ohjelman tulisi sitten arvata numero.Käyttäjä ilmoittaa ohjelmalle, jonka lukumäärä hänen mielestään on pienempi, suurempi tai yhtä suuri kuin ohjelmasta saatu määrä.Esimerkiksi tämä voidaan tehdä tulemalla
<
--
ja=
tapahtuu.
Tietenkin on monia tapoja ratkaista tämä ongelma, ja voit nähdä, toimiiko ohjelmasi vai ei.Tässä esitetään vain näytesaratkaisu, jos et ole ollenkaan selviytynyt tai olet kiinnostunut siitä, kuinka kirjoittaja lähestyi ongelmaa.
#includeint main () {int min, max;// MUUTITUKSET MAHDOLLISESTI NUMERO -ALUE INT -luvulle;// Numero, jonka tietokone epäilee std :: cout << "Mistä numerosarja alkaa?:";// Kyselynumero Alue :: Cin >> min;// Lue käyttäjän syöttö std :: cout << "Missä numerosarja pysähtyy?:";// Kyselynumero alue STD :: CIN >> Max;// lyijykäyttäjän syöttö (char input = '0'; input! = '=';) {// jos syöttö '=' on numero = min + (max - min)/ 2;// Laske keskimääräinen luku STD :: cout << "Ajattele" << "?";// Ilmaise oletus std :: cin >> syöttö;// Lue vastaus, jos (input == '<') // Onko numero pienempi?max = numero;// Max luottaa liian suureen määrään muuta, jos (input == '>') // Onko numero suurempi?min = numero;// luottaa minin pieneen arvonumeroon muuten, jos (input! = '=') // ei myöskään ole syötetty tasa -arvoa std :: cout << "Olet syöttänyt tutkittamattoman merkin! \ n";// Ilmoita väärä syöttö, jos (min+1> = max) {// ei enää numero kelvollisella alueella std :: cout << "Olet valehtelija! \ N";// Ohjelma on erittäin kauhistunut tauko;// Loop peruutetaan}} std :: cout << "Tapasi numero on" << "!"<< std :: endl;// arvatun numeron painos}
tulos-
Mistä numerosarja alkaa?: 0wo pysäyttää numerosarjan?: 100 ajattelemalla noin 50?Ajatteletko 37: tä? Ajatteletko 34: tä? Ajatteletko 33?= Tapaamasi numero on 33!
Tämä on näytepainos, kaikki kysymysmerkistä on käyttäjän syöttö.
Valitettavasti tätä lukua ei ole vielä saatavilla ... | |
Jos sinusta tuntuu, että voit kirjoittaa luvun [[c ++-ohjelmointi/ {{}}}/ {{{luku}}} | {{}}]] tai antaa siihen panosta. |
Valitettavasti tätä lukua ei ole vielä saatavilla ... | |
Jos sinusta tuntuu, että voit kirjoittaa luvun [[c ++-ohjelmointi/ {{}}}/ {{{luku}}} | {{}}]] tai antaa siihen panosta. |
Valitettavasti tästä osiosta ei vieläkään ole yhteenvetoa ... | |
Jos sinusta tuntuu, että voit kirjoittaa [c ++-ohjelmointi/ {{{nimi}}}}/ yhteenveto | |
Sisällysluettelo
Takaisin kirjan esittelyyn
Jatka muita peruselementtejä