Spremenljivke in tipi C ++: int, double, char, string, bool

Kazalo:

Anonim

Spremenljivke v C ++

Spremenljivka C ++ nam omogoča imenovano zmogljivost shranjevanja. Programerju omogoča obdelavo podatkov po potrebi. Vsaka spremenljivka ima tip v jeziku C ++. Tip spremenljivke pomaga določiti velikost in postavitev pomnilniškega zemljevida spremenljivke, obseg vrednosti, ki jih je mogoče shraniti v tem pomnilniku, in nabor operacij, ki jih je mogoče uporabiti na njem.

V tej vadnici C ++ boste izvedeli:

  • Spremenljivke v C ++
  • Osnovne vrste spremenljivk v jeziku C ++
  • Pravila prijave spremenljivk v jeziku C ++
  • C ++ spremenljivi podatkovni tipi
  • Ime spremenljivke ali identifikatorji
  • Const Qualifier v jeziku C ++
  • Obseg spremenljivk v jeziku C ++
  • Pretvorba spremenljivk
  • Registriraj spremenljivke
  • Sekvence pobega

Osnovne vrste spremenljivk v jeziku C ++

Tu so osnovne vrste spremenljivk C ++:

Int:

Celo število je številska literala (povezana s številkami) brez kakršnega koli delnega ali eksponentnega dela. Primer. 120, -90 itd.

Dvoposteljna:

Gre za dvojno natančno vrednost s plavajočo vejico. Primer: 11.22, 2.345

Char:

Znak dobesedno se ustvari z enim znakom, ki je zaprt znotraj enojnih narekovajev. Na primer: 'a', 'm', 'F', 'P', '}' itd.

Float:

Dobesedna beseda s plavajočo vejico je številska dobesedna, ki ima delno ali eksponentno obliko. Na primer: 1.3, 2.6

String Literals:

Niz literal je zaporedje znakov, zaprtih z dvojnimi narekovaji. Na primer: "Kako si?"

Bool:

Vsebuje logično vrednost true ali false.

Pravila prijave spremenljivk v jeziku C ++

Tu je nekaj pogostih pravil za poimenovanje spremenljivke:

  • Ime spremenljivke C ++ ima lahko samo abecede, številke in podčrtaje.
  • Ime spremenljivke C ++ se ne more začeti s številko.
  • Imena spremenljivk se ne smejo začeti z velikimi črkami.
  • Ime spremenljivke, uporabljeno v jeziku C ++, ne more biti ključna beseda. Na primer, int je ključna beseda, ki se uporablja za označevanje celih števil.
  • Ime spremenljivke C ++ se lahko začne s podčrtajem. Vendar to ne velja za dobro prakso.

C ++ spremenljivi podatkovni tipi

C ++ definira celo vrsto primitivnih tipov

Neveljavna vrsta se ni povezan vrednosti z njo in se lahko uporabljajo le v redkih okoliščinah. Najpogosteje je to vrsta vrnitve funkcij, ki ne vrnejo vrednosti.

V aritmetične vrste vključujejo znake, cela, Boolove vrednosti, in s plavajočo vejico. Aritmetični tip, če je nadalje razdeljen na 2 kategoriji

  1. Vrste s plavajočo vejico . Plovec (ali plavajoči tip) predstavlja decimalna števila. Standard IEEE določa najmanjše število pomembnih števk. Večina prevajalnikov ponavadi zagotavlja večjo natančnost, kot je določeno. Običajno so plavajoči predstavljeni v 32-bitnih, dvojni v 64-bitnih, dolge dvojne pa v 96-ih ali 128-bitnih.
  2. Integralni tipi (ki vključujejo znakovne, cela in logična tipa). Logični tip ima samo dve vrsti vrednot: Drži ali ne drži. Obstaja več vrst znakov , ki večinoma obstajajo v podporo internacionalizaciji. Najosnovnejša vrsta znaka je char. Char je enake velikosti kot en strojni bajt, kar pomeni en bajt.

V Integral Vrste so lahko podpisane ali nepodpisane.

Signed Type : Predstavljajo negativne ali pozitivne številke (vključno z ničlo). V podpisani vrsti mora biti obseg enakomerno razdeljen med vrednostmi + ve in -ve. Tako bo 8-bitni podpisani znak imel vrednosti od -127 do 127.

Nepodpisani tip : V nepodpisanem tipu so vse vrednosti> = 0. 8-bitni nepodpisani znak lahko vsebuje od 0 do 255 (vključno z obema).

Ime spremenljivke ali identifikatorji

Identifikatorji so lahko sestavljeni iz nekaterih črk, številk in podčrtaja ali iz njihove kombinacije. Dolžina imena ni omejena.

Identifikatorji morajo

  • začnite s črko ali podčrtajem ('_').
  • In razlikujejo med velikimi in malimi črkami; velike in male črke se razlikujejo:

// definira štiri različne spremenljivke int

int guru99, gurU99, GuRu99, GURU99;

Jezik C ++ je za uporabo rezerviral nekaj imen.

Obstaja veliko sprejetih konvencij za poimenovanje spremenljivk v različnih programskih jezikih. Upoštevanje teh konvencij lahko izboljša berljivost programa.

  • Identifikator mora vsaj nakazati njegov pomen.
  • Imena spremenljivk so običajno mala-guru99, ne Guru99 ali GURU99.
  • Razredi, ki jih določimo, se običajno začnejo z veliko črko.
  • Identifikatorji, ki vsebujejo več besed, bi morali vizualno razlikovati vsako besedo. Na primer, guru99_website ne guru99website.

Izjava in definicija spremenljivke C ++

Deklaracija spremenljivke naredi ime programu znano v obsegu, v katerem je definirana. Primer:

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

Const Qualifier v jeziku C ++

Recimo, da obstaja spremenljivka buffsize, ki navaja število vhodov, ki jih mora uporabnik vzeti. Tu ne želimo spremeniti vrednosti buffsize skozi program. Določiti želimo spremenljivko, katere vrednost vemo, da se ne sme spreminjati.

V takem primeru uporabite ključno besedo const

const int bufSize = 512; // input buffer size

To definira bufSize kot konstanto. Vsak poskus dodelitve ali spremembe bufSize povzroči napako.

Tu ne moremo spremeniti vrednosti predmeta const, potem ko ga izdelamo, obvezno ga je treba prijaviti in inicializirati. V nasprotnem primeru prevajalnik vrže napako.

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

Obseg spremenljivk v jeziku C ++

Obseg je obseg programa, kjer ima spremenljivka pomen. Večinoma isto ime lahko uporabimo za sklicevanje na različne entitete v različnih obsegih. Spremenljivke so vidne od točke, ko so deklarirane, do konca obsega, v katerem se pojavi njihova deklaracija.

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

Ta program opredeljuje 3 imena, in sicer glavno, vsoto in val. Uporablja ime imenskega prostora std, skupaj z dvema imenoma iz tega imenskega prostora-cout in endl.

  • Ime funkcije "main" je določeno zunaj zavitih oklepajev. Ime funkcije, tako kot večina drugih imen, definiranih zunaj funkcije, ima globalni obseg. Kar pomeni, da so imena, ki so v splošnem obsegu , enkrat dostopna v celotnem programu.
  • Spremenljivka vsota je definirana v obsegu bloka, ki je telo glavne funkcije. Dostop do njega je mogoč od točke prijave in do celotnega dela telesa glavne funkcije. Vendar ne zunaj nje. To pomeni, da ima spremenljivka sum obseg blokov .
  • Spremenljivka val je definirana v obsegu "za stavek". V tej izjavi jo je mogoče enostavno uporabiti, drugje v glavni funkciji pa ne. Ima lokalno področje uporabe .

Vgnezdeno področje uporabe

Obseg lahko vsebuje druge obsege. Vsebovani (ali ugnezdeni) obseg se imenuje notranji obseg. Vsebujoči obseg je zunanji obseg.

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

Izhod št. 1 se prikaže pred lokalno definicijo vnovične uporabe. Tako je ta izhod

izjava je tista, ki uporablja ponovno uporabljeno ime, ki je definirano v globalnem obsegu. Ta stavek daje rezultate

42 0

Izhod št. 2 se pojavi po lokalni definiciji ponovne uporabe. Zdaj je v obsegu. Zato ta drugi izhodni stavek preprosto uporablja lokalni objekt z imenom ponovno uporabljen namesto globalnega in izpisuje

0 0

Izhod # 3 preglasi privzeta pravila za določanje obsega z uporabo operatorja obsega. Globalni obseg nima imena. Torej, ko ima operator obsega (: :) prazno levo stran. Razlaga ga kot zahtevo za pridobitev imena na desni strani globalnega obsega. Tako izraz uporablja globalno ponovno uporabljeno in izhodno vrednost

42 0

Pretvorba spremenljivk

Spremenljivko ene vrste je mogoče pretvoriti v drugo. Znana je kot "pretvorba tipa". Oglejmo si pravila za pretvorbo različnih vrst spremenljivk C ++:

Če dodelite ne-bool spremenljivki bool, bo vrednost false, če je vrednost 0, sicer pa true.

bool b = 42; // b is true

Dodelitev merila enemu drugemu aritmetičnemu tipu daje 1, če je vrednost res in 0, če je vrednost napačna.

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

Če spremenljivki tipa int dodelite vrednost s plavajočo vejico, dobite vrednost, ki je okrnjena. Shranjena vrednost je del pred decimalno vejico.

int i = 3.14; // i has value 3

Če dodelite vrednost int spremenljivki float tipa, postane delni del nič. Natančnost se običajno izgubi, če ima celo število več bitov, kot jih lahko sprejme plavajoča spremenljivka.

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

Če poskusimo spremenljivki nepodpisanega tipa dodeliti vrednost zunaj obsega, je rezultat preostanek vrednosti% (modulo)

Na primer, 8-bitni nepodpisani tip char lahko vsebuje vrednosti od 0 do vključno 255. Če dodelite vrednost zunaj tega obsega, bo prevajalnik dodelil preostanek te vrednosti po modulu 256. Torej po zgornji logiki dodelitev -1 8-bitnemu nepodpisanemu znaku daje temu predmetu vrednost 255.

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

Če poskusimo predmetu podpisanega tipa dodeliti vrednost, ki presega obseg, je rezultat nepredvidljiv. Ni opredeljeno. Zdi se, da program deluje zunaj, se lahko zruši ali povzroči vrednosti smeti.

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

Prevajalnik uporabi te iste vrste pretvorb, kadar uporabimo vrednost enega tipa, kjer se pričakuje vrednost drugega tipa.

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

Če je ta vrednost = 0, potem je pogoj napačen; vse druge vrednosti (ki niso nič) dajo vrednost true. Po istem konceptu, ko v aritmetičnem izrazu uporabimo bool, se njegova vrednost vedno pretvori v 0 ali 1. Posledično je uporaba bool v aritmetičnem izrazu običajno skoraj zagotovo napačna.

Pozor: Ne mešajte podpisanih in nepodpisanih vrst

Izrazi, ki mešajo podpisano in nepodpisano, lahko dajo presenetljive in napačne rezultate, če je podpisana vrednost negativna. Kot smo že omenili, se podpisane vrednosti samodejno pretvorijo v nepodpisane.

Na primer, v aritmetičnem izrazu kot

x* y

Če je x -1 in y enak 1, in če sta oba x in y int, potem je vrednost pričakovano -1.

Če je x int in y ni podpisano, je vrednost tega izraza odvisna od tega, koliko bitov ima celo število na stroju za prevajanje. Na našem stroju ta izraz daje 4294967295.

Registriraj spremenljivke

Do registrskih spremenljivk je hitreje dostopati v primerjavi s pomnilniškimi spremenljivkami. Tako lahko spremenljivke, ki se pogosto uporabljajo v programu C ++, vnesemo v registre z uporabo ključne besede register . Ključna beseda register pove prevajalniku, naj dano spremenljivko shrani v register. Izbira prevajalnika je, ali jo bo vpisal v register ali ne. Na splošno prevajalniki sami izvajajo različne optimizacije, ki vključujejo vnos nekaterih spremenljivk v register. Število registrskih spremenljivk v programu C ++ ni omejeno. Toda prevajalnik spremenljivke morda ne bo shranil v register. To je zato, ker je pomnilnik registra zelo omejen in ga operacijski sistem najpogosteje uporablja.

Definirati:

register int i;

Komentarji

Komentarji so deli kode, ki jih je prevajalnik prezrl. Programerju omogoča zapisovanje na ustreznih področjih izvorne kode / programa. Komentarji so v obliki blokov ali v posameznih vrsticah. Komentarji programa so obrazložitve. Vključi ga lahko v kodo C ++, ki pomaga vsem, ki berejo njegovo izvorno kodo. Vsi programski jeziki omogočajo določeno obliko komentarjev. C ++ podpira tako enovrstne kot večvrstne komentarje.

  • Enovrstični komentarji so tisti, ki se začnejo z // in se nadaljujejo do konca vrstice. Če je zadnji znak v vrstici komentarja \, se komentar nadaljuje v naslednji vrstici.
  • Komentarji z več vrsticami se začnejo z / * in končajo z * /.
/* This is a comment *//* C++ comments can also* span multiple lines*/

Sekvence pobega

Nekateri znaki, na primer backspace in kontrolni znaki, nimajo vidne slike. Takšni znaki so znani kot znaki, ki jih ni mogoče natisniti. Drugi znaki (enojni in dvojni narekovaji, vprašaj in poševnica) imajo v mnogih programskih jezikih poseben pomen.

Naši programi ne morejo neposredno uporabiti nobenega od teh znakov. Namesto tega lahko uporabimo ubežno zaporedje za predstavitev takega znaka. Zaporedje pobega se začne s poševnico nazaj.

Programski jezik C ++ opredeljuje več ubežnih zaporedij:

Kaj to naredi?

Značaj

Newline

\ n

Navpični zavihek

\ v

Povratna poševnica

\\

Povratek kočije

\ r

Vodoravni zavihek

\ t

Backspace

\ b

Vprašaj

\?

Formfeed

\ f

Opozorilo (zvonec)

\ a

Dvojna navednica

\ "

Enkratna ponudba

\ '

Uporabljamo ubežno zaporedje, kot da gre za en sam znak:

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

Lahko tudi napišemo posplošena ubežna zaporedja \ x, ki jim sledi ena ali več šestnajstiških številk. Ali pa uporabimo znak \, ki mu sledi ena, dve ali tri osmiške števke. Splošno ubežno zaporedje predstavlja številsko vrednost znaka. Nekaj ​​primerov (ob predpostavki nabora znakov Latin-1):

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

Lahko uporabimo vnaprej določena ubežna zaporedja, kot uporabljamo kateri koli drug znak.

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

Povzetek

  • Spremenljivka C ++ nam omogoča imenovano zmogljivost shranjevanja.
  • Vrste spremenljivk C ++: int, double, char, float, string, bool itd.
  • Vsebovani (ali ugnezdeni) obseg se imenuje notranji obseg, vsebuje pa obseg zunanji obseg.
  • Spremenljivko ene vrste je mogoče pretvoriti v drugo. Znana je kot "pretvorba tipa".
  • Do spremenljivk registrov je dostop hitrejši v primerjavi s spremenljivkami pomnilnika.
  • Komentarji so deli kode, ki jih je prevajalnik prezrl.
  • Nekateri znaki, na primer backspace in kontrolni znaki, nimajo vidne slike.