C ++ Muuttujat ja tyypit: int, double, char, string, bool

Sisällysluettelo:

Anonim

Muuttujat C ++: ssa

C ++ -muuttuja tarjoaa meille nimellisen tallennuskapasiteetin. Sen avulla ohjelmoija voi manipuloida tietoja tarpeen mukaan. Jokaisella muuttujalla on tyyppi C ++. Muuttujatyyppi auttaa määrittämään muuttujan muistikartan koon ja asettelun, muistiin tallennettavien arvojen alueen ja siihen sovellettavat toimintojoukot.

Tässä C ++ -opetusohjelmassa opit:

  • Muuttujat C ++: ssa
  • Muuttujien perustyypit C ++: ssa
  • Muuttujien ilmoittamisen säännöt C ++: ssa
  • C ++ -muuttujatyypit
  • Muuttujan nimi tai tunnisteet
  • Const Qualifier C ++ -pelissä
  • Muuttujien laajuus C ++: ssa
  • Muuttujan tyypin muunnos
  • Rekisteröi muuttujat
  • Pakosarjat

Muuttujien perustyypit C ++: ssa

Tässä ovat C ++ -muuttujien perustyypit:

Int:

Kokonaisluku on numeerinen literaali (liittyy numeroihin) ilman murtolukua tai eksponentiaalista osaa. Esimerkki. 120, -90 jne.

Kaksinkertainen:

Se on kaksitarkkuuksinen liukuluku. Esimerkki: 11.22, 2.345

Hiiltyä:

Hahmolitraali luodaan liittämällä yksi merkki lainausmerkeihin. Esimerkiksi: 'a', 'm', 'F', 'P', '}' jne.

Kellua:

Liukulukuinen literaali on numeerinen literaali, jolla on joko murto- tai eksponenttimuoto. Esimerkiksi: 1.3, 2.6

Jousisitaalit:

Merkkijonon kirjaimellinen merkkijono on kaksoislainausmerkeissä. Esimerkiksi: "Kuinka voit?"

Bool:

Se pitää loogisen arvon tosi tai epätosi.

Muuttujien ilmoittamisen säännöt C ++: ssa

Tässä muutamia yleisiä sääntöjä muuttujan nimeämiselle:

  • C ++ -muuttujan nimessä voi olla vain aakkoset, numerot ja alaviivat.
  • C ++ -muuttujan nimi ei voi alkaa numerolla.
  • Muuttujien nimet eivät saa alkaa isoilla kirjaimilla.
  • C ++: ssa käytetty muuttujan nimi ei voi olla avainsana. Esimerkiksi int on avainsana, jota käytetään merkitsemään kokonaislukuja.
  • C ++ -muuttujan nimi voi alkaa alaviivalla. Sitä ei kuitenkaan pidetä hyvänä käytäntönä.

C ++ -muuttujatyypit

C ++ määrittelee koko joukon primitiivisiä tyyppejä

Mitätön tyyppi ei ole liittynyt arvojen kanssa ja voidaan käyttää vain muutama olosuhteissa. Se on yleisimmin sellaisten funktioiden palautustyyppi, jotka eivät palauta arvoa.

Aritmeettinen tyypit sisältävät merkkejä, kokonaislukuja, loogisia arvoja, ja liukulukuina. Aritmeettinen tyyppi, jos se jaetaan edelleen kahteen luokkaan

  1. Liukuluku tyypit . Kelluva (tai kelluva tyyppi) edustaa desimaalilukuja. IEEE-standardi määrittää vähimmäismäärän merkittäviä numeroita. Useimmat kääntäjät tarjoavat yleensä enemmän tarkkuutta kuin määritetty minimi. Tavallisesti kellukkeita edustaa 32 bittiä, kaksinkertaistuu 64 bitillä ja pitkiä kaksinkertaistuu joko 96 tai 128 bitillä.
  2. Integraalityypit (jotka sisältävät merkki-, kokonaisluku- ja Boolen-tyypit). Boolen tyyppi on vain kahdenlaisia arvoja: Oikein vai väärin. On olemassa useita char- tyyppejä, joista suurin osa on olemassa kansainvälistymisen tukemiseksi. Perusmerkkityyppi on char. Char on samankokoinen kuin yksi konetavu, mikä tarkoittaa yhtä tavua.

Integral tyypit voidaan allekirjoittaa tai allekirjoittamattomien.

Allekirjoitettu tyyppi : Ne edustavat negatiivisia tai positiivisia lukuja (nolla mukaan lukien). Allekirjoitetussa tyypissä alue on jaettava tasaisesti + ve- ja -ve-arvojen välillä. Siten 8-bittinen allekirjoitettu merkki pitää arvot välillä -127 - 127.

Allekirjoittamaton tyyppi : Allekirjoittamattomassa tyypissä kaikki arvot ovat> = 0. 8-bittinen allekirjoittamaton merkki voi sisältää 0 - 255 (molemmat mukaan lukien).

Muuttujan nimi tai tunnisteet

Tunnisteet voivat koostua joistakin kirjaimista, numeroista ja alaviivan merkistä tai jostakin niiden yhdistelmästä. Nimen pituutta ei ole rajoitettu.

Tunnisteiden on oltava

  • alkaa joko kirjaimella tai alaviivalla ('_').
  • Ja ovat kirjainkokoisia; isot ja pienet kirjaimet ovat erilliset:

// määrittelee neljä erilaista int-muuttujaa

int guru99, gurU99, GuRu99, GURU99;

C ++ -kieli on varannut joitain nimiä sen käyttöön.

Muuttujien nimeämiselle eri ohjelmointikielillä on monia hyväksyttyjä käytäntöjä. Näiden käytäntöjen noudattaminen voi parantaa ohjelman luettavuutta.

  • Tunnisteen tulisi antaa ainakin jonkin verran viitteitä sen merkityksestä.
  • Muuttujien nimet ovat yleensä pieniä kirjaimia-guru99, eivät Guru99 tai GURU99.
  • Määrittelemämme luokat alkavat yleensä isolla kirjaimella.
  • Tunnuksia, jotka sisältävät useita sanoja, tulisi erottaa jokainen sana visuaalisesti. Esimerkiksi guru99_website ei guru99website.

C ++ - muuttujailmoitus ja määritelmä

Muuttujan ilmoittaminen tekee nimen tiedoksi ohjelmalle siinä määritellyssä laajuudessa. Esimerkki:

int a=5;int b;char c='A';
int a,b;a=b=1000;
List initializationint a(5);int b{5};

Const Qualifier C ++ -pelissä

Oletetaan, että on vaihteleva buffsize, joka ilmoittaa käyttäjältä otettavien syötteiden määrän. Tässä emme halua muuttaa buffsize-arvoa koko ohjelmassa. Haluamme määritellä muuttujan, jonka arvon tiedämme, ettei sen pitäisi muuttua.

Käytä tällöin avainsanaa const

const int bufSize = 512; // input buffer size

Tämä määrittelee bufSize-vakion. Jokainen yritys määrittää bufSize tai muuttaa sitä antaa virheen.

Tässä emme voi muuttaa const-objektin arvoa sen luomisen jälkeen, se on pakollinen ilmoittamaan ja alustamaan. Muuten kääntäjä heittää virheen.

const int i = get_size(); // ok: initialized at run timeconst int j = 42; // ok: initialized at compile timeconst int k; // error: k is uninitialized constint i = 42;const int ci = i; // ok: the value in i is copied into ci

Muuttujien laajuus C ++: ssa

Laajuus on ohjelman alue, jossa muuttujalla on merkitys. Enimmäkseen samaa nimeä voidaan käyttää viittaamaan eri kokonaisuuksiin eri laajuuksissa. Muuttujat ovat näkyvissä siitä hetkestä, kun ne on ilmoitettu, sen ilmoituksen laajuuden loppuun saakka.

#include int main(){int sum = 0;// sum values from 1 through 10 inclusivefor (int val = 1; val <= 10; ++val)sum += val; // equivalent to sum = sum + valcout << "Sum of 1 to 10 inclusive is "<< sum <

Tämä ohjelma määrittelee 3 nimeä, nimittäin pää, summa ja val. Se käyttää nimitilan nimeä std sekä kahta muuta nimeä kyseisestä nimitilasta-cout ja endl.

  • Funktion nimi "main" määritetään kiharoiden aaltosulkeiden ulkopuolelle. Funktion nimellä main kuten useimmilla muilla funktion ulkopuolella määritellyillä nimillä on globaali laajuus. Mikä tarkoittaa, että ilmoitettuaan maailmanlaajuiset nimet ovat käytettävissä koko ohjelmassa.
  • Muuttuja summa määritetään sen lohkon puitteissa, joka on pääfunktion runko. Sitä voi käyttää ilmoituksen yhteydessä ja muualla päätoiminnon rungossa. Ei kuitenkaan sen ulkopuolella. Tämä tarkoittaa, että muuttuvalla summalla on estolaajuus .
  • Muuttuja val määritellään "for lause" -alueella. Sitä voidaan helposti käyttää kyseisessä lauseessa, mutta ei muualla päätoiminnossa. Sillä on paikallinen ulottuvuus .

Sisäkkäinen soveltamisala

Laajuus voi sisältää muita laajuuksia. Sisällytettyyn (tai sisäkkäiseen) laajuuteen viitataan sisäisenä. Sisältävä soveltamisala on ulompi.

#include using namespace std;// Program for illustration purposes only: It is bad style for a function// to use a global variable and also define a local variable with the same nameint reused = 42; // reused has global scopeint main(){int unique = 0; // unique has block scope// output #1: uses global reused; prints 42 0cout << reused << " " << unique << endl;int reused = 0; // new, local object named reused hides global reused// output #2: uses local reused; prints 0 0cout << reused << " " << unique << endl;// output #3: explicitly requests the global reused; prints 42 0cout << ::reused << " " << unique << endl;return 0;}

Lähtö # 1 näkyy ennen uudelleenkäytön paikallista määritelmää. Siten tämä tuotos

lause on se, joka käyttää uudelleenkäytettyä nimeä, joka on määritelty globaalisti. Tämä lausunto tuottaa

42 0

Tulos # 2 tapahtuu uudelleenkäytetyn paikallisen määritelmän jälkeen. Se kuuluu nyt soveltamisalaan. Siksi tässä toisessa lähtölausekkeessa käytetään yksinkertaisesti paikallista objektia, jonka nimi on uudelleenkäytetty, eikä globaalia ja lähtöjä

0 0

Lähtö # 3 ohittaa oletusarvosäännöt soveltamisalaoperaattorilla. Globaalilla laajuudella ei ole nimeä. Siten, kun laajuusoperaattorilla (: :) on tyhjä vasen puoli. Se tulkitsee sen pyynnön noutaa nimi globaalin laajuuden oikealta puolelta. Täten lauseke käyttää globaalia uudelleenkäyttöä ja tuotoksia

42 0

Muuttujan tyypin muunnos

Yhden tyyppinen muuttuja voidaan muuntaa toiseen. Se tunnetaan nimellä "Type Conversion". Katsotaanpa säännöt eri C ++ -muuttujatyyppien muuntamiseksi:

Ei-boolin määrittäminen bool-muuttujaan antaa epätodennäköisyyden, jos arvo on 0, ja tosi muuten.

bool b = 42; // b is true

Boolin määrittäminen jollekin muulle aritmeettiselle tyypille tuottaa 1, jos bool on tosi ja 0, jos bool on väärä.

bool b = true;int i = b; // i has value 1

Liukuluku-arvon määrittäminen int-tyyppiselle muuttujalle tuottaa arvon, joka on katkaistu. Tallennettu arvo on desimaalipistettä edeltävä osa.

int i = 3.14; // i has value 3

Int-arvon määrittäminen float-tyyppiselle muuttujalle johtaa murto-osan nollaksi. Tarkkuus menetetään yleensä, jos kokonaisluvulla on enemmän bittejä kuin kelluva muuttuja mahtuu.

Int i=3;double pi = i; // pi has value 3.0

Jos yritämme määrittää alueen ulkopuolella olevan arvon muuttujalle, joka ei ole allekirjoitettu, tuloksena on loppuosa arvosta% (modulo)

Esimerkiksi 8-bittinen allekirjoittamaton char-tyyppi voi pitää arvoja välillä 0–255. Arvon osoittaminen tämän alueen ulkopuolelle johtaa kääntäjään varaamaan loppuosan arvosta modulo 256. Siksi yllä olevan logiikan mukaan -1: n osoittaminen 8-bittiselle allekirjoittamattomalle merkille antaa tälle objektille arvon 255.

unsigned char c = -1; // assuming 8-bit chars, c has value 255

Jos yritämme määrittää alueen ulkopuolisen arvon allekirjoitetun tyyppiselle objektille, tulos on arvaamaton. Se on määrittelemätön. Ohjelma saattaa näyttää toimivan ulkopuolelta, se saattaa kaatua tai tuottaa roska-arvoja.

signed char c2 = 256; // assuming 8-bit chars, the value of c2 is undefined

Kääntäjä käyttää näitä samantyyppisiä tuloksia, kun käytämme yhden tyyppistä arvoa, jossa odotetaan muun tyyppistä arvoa.

int i = 42;if (i) // condition will evaluate as truei = 0;

Jos tämä arvo = 0, ehto on väärä; kaikki muut (nollasta poikkeavat) arvot ovat tosi. Samalla käsitteellä, kun käytämme boolia aritmeettisessa lausekkeessa, sen arvo muunnetaan aina arvoksi 0 tai 1. Tämän seurauksena boolin käyttö aritmeettisessa lausekkeessa on yleensä melkein varmasti virheellistä.

Varoitus: Älä sekoita allekirjoitettuja ja allekirjoittamattomia tyyppejä

Lausekkeet, jotka sekoittavat allekirjoitettua ja allekirjoittamatonta, voivat tuottaa yllättäviä ja vääriä tuloksia, kun allekirjoitettu arvo on negatiivinen. Kuten yllä todettiin, allekirjoitetut arvot muunnetaan automaattisesti allekirjoittamattomiksi.

Esimerkiksi aritmeettisessa lausekkeessa kuten

x* y

Jos x on -1 ja y on 1 ja jos sekä x että y ovat int, niin arvo on odotetusti -1.

Jos x on int ja y ovat allekirjoittamattomia, niin tämän lausekkeen arvo riippuu siitä, kuinka monta bittiä kokonaisluvulla on kääntölaitteessa. Koneellamme tämä lauseke tuottaa 4294967295.

Rekisteröi muuttujat

Rekisterimuuttujiin pääsee nopeammin kuin muistimuuttujiin. Joten muuttujat, joita käytetään usein C ++ - ohjelmassa, voidaan laittaa rekistereihin rekisterihakusanalla . Rekisterin avainsana käskee kääntäjää tallentamaan annetun muuttujan rekisteriin. Kääntäjän valinta on lisätä se rekisteriin vai ei. Yleensä kääntäjät itse tekevät erilaisia ​​optimointeja, jotka sisältävät osan muuttujista rekisteriin. C ++ -ohjelman rekisterimuuttujien lukumäärää ei ole rajoitettu. Kääntäjä ei kuitenkaan välttämättä tallenna muuttujaa rekisteriin. Tämä johtuu siitä, että rekisterimuisti on hyvin rajallinen, ja käyttöjärjestelmä käyttää sitä yleensä.

Määritä:

register int i;

Kommentit

Kommentit ovat kääntäjän ohittamia koodin osia. Sen avulla ohjelmoija voi tehdä muistiinpanoja lähdekoodin / ohjelman asiaankuuluville alueille. Kommentit tulevat joko lohkoina tai yksirivisinä. Ohjelman kommentit ovat selittäviä lausuntoja. Se voidaan sisällyttää C ++ -koodiin, joka auttaa kaikkia lukemaan lähdekoodia. Kaikki ohjelmointikielet sallivat jonkinlaisen kommentin. C ++ tukee sekä yksirivisiä että monirivisiä kommentteja.

  • Yksiriviset kommentit ovat niitä, jotka alkavat //: llä ja jatkuvat rivin loppuun asti. Jos kommentirivin viimeinen merkki on \, kommentti jatkuu seuraavalla rivillä.
  • Moniriviset kommentit alkavat / * ja päättyvät * /.
/* This is a comment *//* C++ comments can also* span multiple lines*/

Pakosarjat

Joillakin merkeillä, kuten askelpalautuksella ja ohjausmerkeillä, ei ole näkyvää kuvaa. Tällaisia ​​merkkejä kutsutaan ei-tulostettaviksi merkeiksi. Muilla merkeillä (yksi- ja kaksinkertaiset lainausmerkit, kysymysmerkki ja taaksepäin) on erityinen merkitys monilla ohjelmointikielillä.

Ohjelmamme eivät pysty käyttämään näitä merkkejä suoraan. Sen sijaan voimme käyttää pakosarjaa edustamaan tällaista merkkiä. Pakosarja alkaa taaksepäin.

C ++ - ohjelmointikieli määrittelee useita pakosarjoja:

Mitä se tekee?

Merkki

Uusi rivi

\ n

Pysty-välilehti

\ v

Kenoviiva

\\

Vaunun paluu

\ r

Vaaka-välilehti

\ t

Askelpalautin

\ b

Kysymysmerkki

\?

Formfeed

\ f

Varoitus (soittokello)

\ a

Kaksoislainaus

\ "

Yksi tarjous

\ '

Käytämme pakosarjaa ikään kuin se olisi yksi merkki:

cout << '\n'; // prints a newlinecout << "\tguru99!\n"; // prints a tab followed by "guru99!" and a newline

Voimme myös kirjoittaa yleisiä pakosarjoja \ x, joita seuraa yksi tai useampi heksadesimaaliluku. Tai käytämme \, jota seuraa yksi, kaksi tai kolme oktaalinumeroa. Yleistetty pakosarja edustaa merkin numeerista arvoa. Joitakin esimerkkejä (olettaen Latin-1-merkkisarja):

\7 (bell) \12 (newline) \40 (blank)\0 (null) \115 ('M') \x4d ('M')

Voimme käyttää ennalta määritettyjä pakosarjoja, kuten mitä tahansa muuta merkkiä.

cout << "Hi \x4dO\115!\n"; // prints Hi MOM! followed by a newlinecout << '\115' << '\n'; // prints M followed by a newline

Yhteenveto

  • C ++ -muuttuja tarjoaa meille nimellisen tallennuskapasiteetin.
  • C ++ -muuttujatyypit: int, double, char, float, string, bool jne.
  • Sisällytettyyn (tai sisäkkäiseen) laajuuteen viitataan sisäisenä laajuutena, ja sisältävä laajuus on ulompi.
  • Yhden tyyppinen muuttuja voidaan muuntaa toiseen. Se tunnetaan nimellä "Type Conversion".
  • Rekisterimuuttujiin pääsee nopeammin kuin muistimuuttujiin.
  • Kommentit ovat kääntäjän ohittamia koodin osia.
  • Joillakin merkeillä, kuten askelpalautuksella ja ohjausmerkeillä, ei ole näkyvää kuvaa.