C ++ kintamieji ir tipai: int, double, char, string, bool

Turinys:

Anonim

Kintamieji C ++

C ++ kintamasis suteikia mums vardinę saugojimo galimybę. Tai leidžia programuotojui manipuliuoti duomenimis pagal poreikį. Kiekvieno kintamojo tipas yra C ++. Kintamojo tipas padeda nustatyti kintamojo atminties žemėlapio dydį ir išdėstymą, vertybių, kurias galima išsaugoti toje atmintyje, diapazoną ir jai taikomų operacijų rinkinį.

Šioje C ++ pamokoje sužinosite:

  • Kintamieji C ++
  • Pagrindiniai kintamųjų tipai C ++
  • Kintamųjų deklaravimo taisyklės C ++
  • C ++ kintamųjų duomenų tipai
  • Kintamojo pavadinimas arba identifikatoriai
  • „Const“ kvalifikacija C ++
  • Kintamųjų apimtis C ++
  • Kintamo tipo konversija
  • Registruokite kintamuosius
  • Pabėgimo sekos

Pagrindiniai kintamųjų tipai C ++

Čia yra pagrindiniai C ++ kintamųjų tipai:

Vid .:

Sveikasis skaičius yra skaitinis literalas (susietas su skaičiais) be trupmeninės ar eksponentinės dalies. Pavyzdys. 120, -90 ir kt.

Dvivietis:

Tai dvigubo tikslumo slankiojo kablelio reikšmė. Pavyzdys: 11.22, 2.345

Char:

Simbolių pažodinis žodis sukurtas įterpiant vieną simbolį į kabutes. Pvz .: „a“, „m“, „F“, „P“, „}“ ir kt.

Plūdė:

Slankiojo kablelio literalas yra skaitinis literalas, turintis arba trupmeninę, arba eksponentinę formą. Pavyzdžiui: 1.3, 2.6

Styginiai literalai:

String literal yra simbolių seka, uždėta dvigubose kabutėse. Pavyzdžiui: "Kaip tu?"

Bool:

Tai reiškia, kad Bulio reikšmė yra teisinga arba klaidinga.

Kintamųjų deklaravimo taisyklės C ++

Štai keletas įprastų kintamojo pavadinimo taisyklių:

  • C ++ kintamojo pavadinime gali būti tik abėcėlės, skaičiai ir pabraukimas.
  • C ++ kintamojo pavadinimas negali prasidėti skaičiumi.
  • Kintamieji pavadinimai neturėtų prasidėti didžiosiomis raidėmis.
  • Kintamojo pavadinimas, naudojamas C ++, negali būti raktinis žodis. Pavyzdžiui, int yra raktinis žodis, naudojamas sveikiems skaičiams žymėti.
  • C ++ kintamojo pavadinimas gali prasidėti pabraukimu. Tačiau tai nėra laikoma gera praktika.

C ++ kintamųjų duomenų tipai

C ++ apibrėžia visą primityvių tipų rinkinį

Void“ tipas neturi jokių susijusių verčių ir jį galima naudoti tik keliomis aplinkybėmis. Dažniausiai tai yra funkcijų, kurios negrąžina vertės, grąžinimo tipas.

Į aritmetinės rūšys yra simbolių, sveikieji skaičiai, loginės vertės ir slankaus kablelio skaičius. Aritmetinis tipas, jei toliau skirstomas į 2 kategorijas

  1. Plūduriuojančių taškų tipai . Plūduriuojantis (arba plūduriuojantis) tipas reiškia dešimtainius skaičius. IEEE standartas nurodo mažiausią reikšmingų skaitmenų skaičių. Dauguma kompiliatorių paprastai pateikia didesnį tikslumą nei nurodytas minimumas. Paprastai plūdės vaizduojamos 32 bitais, dvigubai - 64 bitais, o ilgosiomis - 96 arba 128 bitais.
  2. Integralūs tipai (kurie apima simbolių, sveikųjų skaičių ir Būlio tipus). Būlio tipas turi tik dviejų tipų reikšmes: true arba false. Yra keletas char tipų, kurių dauguma egzistuoja siekiant palaikyti internacionalizaciją. Pats pagrindinis simbolių tipas yra char. Char yra tokio paties dydžio, kaip ir vieno mašinos baitas, reiškiantis vieną baitą.

Integral“ tipai gali būti pasirašyti arba nepasirašyti.

Pasirašytas tipas : jie reiškia neigiamus arba teigiamus skaičius (įskaitant nulį). Pasirašyto tipo diapazonas turi būti tolygiai padalytas tarp + ve ir -ve reikšmių. Taigi, 8 bitų pasirašytoje simbolyje reikšmės bus nuo -127 iki 127.

Nepasirašyto tipo : Nepasirašyto tipo visos vertės yra> = 0. 8 bitų nepasirašytoje simbolyje gali būti nuo 0 iki 255 (abu imtinai).

Kintamojo pavadinimas arba identifikatoriai

Identifikatorius gali sudaryti kai kurios raidės, skaitmenys ir pabraukimo ženklas arba jų derinys. Vardo ilgiui riba netaikoma.

Identifikatoriai privalo

  • prasideda raide arba pabraukimu ('_').
  • Ir yra didžiosios ir mažosios raidės; didžiosios ir mažosios raidės skiriasi:

// apibrėžia keturis skirtingus int kintamuosius

int guru99, gurU99, GuRu99, GURU99;

C ++ kalba pasiliko keletą pavadinimų.

Yra daug priimtų kintamųjų pavadinimų skirtingomis programavimo kalbomis pavadinimų. Laikantis šių konvencijų galima pagerinti programos suprantamumą.

  • Identifikatorius turėtų bent jau nurodyti jo reikšmę.
  • Kintamieji pavadinimai paprastai yra mažosios guru99, o ne Guru99 ar GURU99.
  • Mūsų apibrėžtos klasės paprastai prasideda didžiąja raide.
  • Identifikatoriai, kuriuose yra keli žodžiai, turėtų vizualiai atskirti kiekvieną žodį. Pavyzdžiui, guru99_website, o ne guru99website.

C ++ kintamojo deklaracija ir apibrėžimas

Deklaravus kintamąjį, programai žinomas pavadinimas pagal apibrėžtą sritį. Pavyzdys:

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

„Const“ kvalifikacija C ++

Tarkime, kad yra kintamasis bufetas, kuriame nurodomas įvesties, kurią reikia paimti iš vartotojo, skaičius. Čia mes nenorime keisti „buffsize“ vertės visoje programoje. Mes norime apibrėžti kintamąjį, kurio vertė, kurią žinome, neturėtų keistis.

Tokiu atveju naudokite raktinį žodį const

const int bufSize = 512; // input buffer size

Tai apibrėžia bufSize kaip konstantą. Bet koks bandymas priskirti ar pakeisti bufSize suteikia klaidą.

Čia mes negalime pakeisti konst objekto vertės jį sukūrę, jį privaloma deklaruoti ir inicializuoti. Kitu atveju kompiliatorius iškelia klaidą.

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

Kintamųjų apimtis C ++

Taikymo sritis yra programos apimtis, kai kintamasis turi reikšmę. Dažniausiai tą patį pavadinimą galima naudoti skirtingiems subjektams, esantiems skirtingose ​​srityse. Kintamieji yra matomi nuo jų deklaravimo vietos iki srities, kurioje yra jų deklaracija, pabaigos.

#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 <

Ši programa apibrėžia 3 pavadinimus, ty pagrindinį, sumą ir val. Jis naudoja vardų srities pavadinimą „std“ kartu su dviem kitais vardais iš tos vardų srities „cout“ ir „endl“.

  • Funkcijos pavadinimas „main“ yra apibrėžtas už garbanotųjų petnešų. Funkcijos pavadinimas „pagrindinis“, kaip ir dauguma kitų pavadinimų, apibrėžtų už funkcijos ribų, turi visuotinę apimtį. Tai reiškia, kad paskelbus, visuotiniai vardai yra prieinami visoje programoje.
  • Kintama suma yra apibrėžta pagal bloką, kuris yra pagrindinės funkcijos turinys. Su juo galima susipažinti iš jo deklaravimo vietos ir visame pagrindinės funkcijos kūne. Tačiau ne už jos ribų. Tai reiškia, kad kintama suma turi bloko apimtį .
  • Kintamasis val yra apibrėžtas taikymo srityje „for lause“. Jį galima lengvai naudoti tame sakinyje, bet ne kitoje pagrindinės funkcijos dalyje. Jis turi vietinę apimtį .

Įterpta sritis

Taikymo sritis gali apimti kitas sritis. Esama (arba įdėta) sritis vadinama vidine. Taikymo sritis yra išorinė taikymo sritis.

#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;}

Rezultatas Nr. 1 rodomas prieš vietinį pakartotinio naudojimo apibrėžimą. Taigi, ši išvestis

sakinys yra tas, kuris naudoja pakartotinai naudojamą pavadinimą, apibrėžtą pasauline apimtimi. Šis teiginys išleidžia

42 0

Rezultatas Nr. 2 atsiranda po vietinio pakartotinio naudojimo apibrėžimo. Dabar jo taikymo sritis. Todėl šiame antrame išvesties sakinyje paprasčiausiai naudojamas vietinis objektas, pavadintas pakartotinai, o ne visuotinis, ir išvestys

0 0

3 išvestis pakeičia numatytąsias taikymo srities taisykles naudodama srities operatorių. Visuotinė apimtis neturi pavadinimo. Taigi, kai taikymo srities operatorius (: :) turi tuščią kairę pusę. Tai aiškinama kaip prašymas gauti pavadinimą dešinėje globalios apimties pusėje. Taigi, išraiška naudoja visuotinį pakartotinį naudojimą ir išvestis

42 0

Kintamo tipo konversija

Vieno tipo kintamąjį galima konvertuoti į kitą. Tai žinoma kaip „Tipo konversija“. Pažiūrėkime, kaip konvertuoti skirtingus C ++ kintamųjų tipus:

Priskyrus „Bool“ ne „Bool“ kintamajam, gaunamas „false“, jei reikšmė yra 0, o tiesa - kitaip.

bool b = 42; // b is true

Priskyrus talpyklą vienam iš kitų aritmetinių tipų, gaunama 1, jei talpa yra teisinga, ir 0, jei talpa neteisinga.

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

Priskyrus slankiojo kablelio vertę int tipo kintamajam, gaunama sutrumpinta vertė. Saugoma vertė yra dalis prieš kablelį.

int i = 3.14; // i has value 3

Priskyrus int reikšmę plūduriuojančio tipo kintamajam, trupmeninė dalis tampa nulis. Tikslumas paprastai prarandamas, jei sveikasis skaičius turi daugiau bitų, nei telpa kintamasis kintamasis.

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

Jei bandysime priskirti nepasiekto diapazono reikšmę nepasirašyto tipo kintamajam, rezultatas bus likusi vertė% (modulo)

Pavyzdžiui, 8 bitų nepasirašytas simbolio tipas gali turėti reikšmes nuo 0 iki 255 imtinai. Priskyrus vertę už šio diapazono ribų, kompiliatorius priskiria likusią tos vertės dalį modulo 256. Todėl pagal pirmiau pateiktą logiką, priskyrus -1 prie 8 bitų nepasirašytos simbolio, tam objektui suteikiama vertė 255.

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

Jei bandysime priskirti pasirašyto tipo objektui reikšmę, neatitinkančią diapazono, rezultatas nenuspėjamas. Tai nėra apibrėžta. Gali pasirodyti, kad programa veikia išorėje, gali sugesti arba sukurti šiukšlių reikšmes.

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

Kompiliatorius taiko tos pačios rūšies konversijas, kai naudojame vienos rūšies vertę, kur tikimasi kito tipo vertės.

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

Jei ši vertė = 0, tai sąlyga yra klaidinga; visos kitos (ne nulinės) reikšmės yra teisingos. Pagal tą pačią sąvoką, kai mes naudojame talpą aritmetinėje išraiškoje, jos vertė visada konvertuojama į 0 arba 1. Dėl to, naudodamiesi aritmetine išraiška, dažniausiai beveik neteisinga.

Dėmesio: nemaišykite pasirašytų ir nepasirašytų tipų

Išraiška, kurioje sumaišytas pasirašytas ir nepasirašytas, gali duoti stebėtinus ir neteisingus rezultatus, kai pasirašyta vertė yra neigiama. Kaip aptarta aukščiau, pasirašytos vertės automatiškai konvertuojamos į nepasirašytas.

Pavyzdžiui, aritmetine išraiška kaip

x* y

Jei x yra -1, o y yra 1, ir jei x ir y yra int, tada, kaip tikėtasi, vertė yra -1.

Jei x yra int, o y yra nepasirašyti, tada šios išraiškos vertė priklauso nuo to, kiek bitų sveikasis skaičius turi kompiliavimo mašinoje. Mūsų mašinoje ši išraiška duoda 4294967295.

Registruokite kintamuosius

Registrų kintamieji yra greičiau prieinami, palyginti su atminties kintamaisiais. Taigi, kintamuosius, kurie dažnai naudojami C ++ programoje, galima įrašyti į registrus naudojant registro raktinį žodį. Registro raktinis žodis liepia kompiliatoriui saugoti nurodytą kintamąjį registre. Kompiliatoriaus pasirinkimas - įtraukti jį į registrą ar ne. Paprastai kompiliatoriai patys atlieka įvairius optimizavimus, įtraukdami kai kuriuos kintamuosius į registrą. C ++ programoje registrų kintamųjų skaičius neribojamas. Bet kompiliatorius gali neišsaugoti kintamojo registre. Taip yra dėl to, kad registrų atmintis yra labai ribota ir dažniausiai naudojama OS.

Apibrėžti:

register int i;

Komentarai

Komentarai yra kompiliatoriaus ignoruojamos kodo dalys. Tai leidžia programuotojui padaryti užrašus atitinkamose šaltinio kodo / programos srityse. Komentarai pateikiami blokiniu pavidalu arba atskiromis eilutėmis. Programos komentarai yra aiškinamieji teiginiai. Jį galima įtraukti į C ++ kodą, kuris padeda visiems, skaitantiems jo šaltinio kodą. Visos programavimo kalbos leidžia tam tikros formos komentarus. C ++ palaiko tiek vienos eilutės, tiek kelių eilučių komentarus.

  • Vienos eilutės komentarai prasideda nuo // ir tęsiasi iki eilutės pabaigos. Jei paskutinis komentaro eilutės simbolis yra \, komentaras bus tęsiamas kitoje eilutėje.
  • Kelių eilučių komentarai yra tie, kurie prasideda / * ir baigiasi * /.
/* This is a comment *//* C++ comments can also* span multiple lines*/

Pabėgimo sekos

Kai kurie simboliai, pvz., Grįžimo ir valdymo simboliai, neturi matomo vaizdo. Tokie simboliai yra žinomi kaip nespausdinami simboliai. Kiti simboliai (viengubos ir dvigubos kabutės, klaustukas ir atgalinis pasvirasis brūkšnys) turi ypatingą reikšmę daugelyje programavimo kalbų.

Mūsų programos negali tiesiogiai naudoti nė vieno iš šių simbolių. Vietoj to, mes galime naudoti pabėgimo seką tokiai char. Pabėgimo seka prasideda atbuliniu brūkšniu.

C ++ programavimo kalba apibrėžia kelias pabėgimo sekas:

Ką tai daro?

Charakteris

Nauja linija

\ n

Vertikalus skirtukas

\ v

Nugaros brūkšnys

\\

Vežimo grįžimas

\ r

Horizontalusis skirtukas

\ t

Backspace

\ b

Klaustukas

\?

Formfeed

\ f

Įspėjimas (varpas)

\ a

Dviguba citata

\ "

Viena citata

\ '

Mes naudojame pabėgimo seką, tarsi tai būtų vienas simbolis:

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

Taip pat galime parašyti apibendrintas pabėgimo sekas \ x, po kurių eina vienas ar keli šešioliktainiai skaitmenys. Arba mes naudojame \, po kurio nurodomas vienas, du arba trys aštuonkojai skaitmenys. Apibendrinta pabėgimo seka nurodo skaitinę simbolio vertę. Keletas pavyzdžių (darant prielaidą, kad „Latin-1“ simbolių rinkinys):

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

Mes galime naudoti iš anksto nustatytas pabėgimo sekas, kaip ir bet kurį kitą simbolį.

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

Santrauka

  • C ++ kintamasis suteikia mums vardinę saugojimo galimybę.
  • C ++ kintamųjų tipai: int, double, char, float, string, bool ir kt.
  • Apimta (arba įdėta) sritis vadinama vidine, o apimanti - išorine.
  • Vieno tipo kintamąjį galima konvertuoti į kitą. Tai žinoma kaip „Tipo konversija“.
  • Registrų kintamieji yra greičiau prieinami, palyginti su atminties kintamaisiais.
  • Komentarai yra kompiliatoriaus ignoruojamos kodo dalys.
  • Kai kurie simboliai, pvz., Grįžimo ir valdymo simboliai, neturi matomo vaizdo.