Variabile în C ++
O variabilă C ++ ne oferă o capacitate de stocare numită. Permite programatorului să manipuleze datele conform nevoilor. Fiecare variabilă are un tip în C ++. Tipul variabilei ajută la determinarea dimensiunii și a aspectului hărții de memorie a variabilei, a gamei de valori care pot fi stocate în memoria respectivă și a setului de operații care pot fi aplicate acesteia.
În acest tutorial C ++, veți învăța:
- Variabile în C ++
- Tipuri de bază de variabile în C ++
- Reguli de declarare a variabilelor în C ++
- Tipuri de date variabile C ++
- Numele sau identificatorii variabilei
- Calificativ Const în C ++
- Scopul variabilelor în C ++
- Conversie tip variabil
- Înregistrați variabile
- Secvențe de evadare
Tipuri de bază de variabile în C ++
Iată tipurile de bază ale variabilelor C ++:
Int:
Un număr întreg este un literal numeric (asociat cu numerele) fără nici o parte fracționată sau exponențială. Exemplu. 120, -90 etc.
Dubla:
Este o valoare în virgulă mobilă de dublă precizie. Exemplu: 11.22, 2.345
Char:
Un caracter literal este creat prin încadrarea unui singur caracter în ghilimele unice. De exemplu: „a”, „m”, „F”, „P”, „}” etc.
Pluti:
Un literal cu virgulă mobilă este un literal numeric care are fie o formă fracționată, fie o formă exponentă. De exemplu: 1.3, 2.6
Litere în șir:
Un literal șir este o secvență de caractere încadrate între ghilimele duble. De exemplu: "Ce mai faci?"
Bool:
Deține valoarea booleană adevărată sau falsă.
Reguli de declarare a variabilelor în C ++
Iată câteva reguli comune pentru denumirea unei variabile:
- Un nume de variabilă C ++ poate avea numai alfabete, numere și subliniere.
- Un nume de variabilă C ++ nu poate începe cu un număr.
- Numele variabilelor nu trebuie să înceapă cu un caracter majuscul.
- Un nume de variabilă utilizat în C ++ nu poate fi un cuvânt cheie. De exemplu, int este un cuvânt cheie care este utilizat pentru a desemna numere întregi.
- Un nume de variabilă C ++ poate începe cu un subliniere. Cu toate acestea, nu este considerată o bună practică.
Tipuri de date variabile C ++
C ++ definește un întreg set de tipuri primitive
Void Tipul are valori cu ea nici un asociat și poate fi utilizată în doar câteva circumstanțe. Este cel mai frecvent ca tip de funcții returnate care nu returnează o valoare.
Cele Tipurile aritmetice includ caractere, numere întregi, valorile booleene și numere în virgulă mobilă. Tipul aritmetic dacă este împărțit în continuare în 2 categorii
- Tipuri cu virgulă mobilă . Flotantul (sau tipul flotant) reprezintă numere zecimale. Standardul IEEE specifică un număr minim de cifre semnificative. Majoritatea compilatoarelor oferă de obicei mai multă precizie decât minimul specificat. De obicei, plutitoarele sunt reprezentate prin 32 de biți, dubluri în 64 de biți și duble lungi în 96 sau 128 de biți.
- Tipuri integrale (care includ caractere, numere întregi și tipuri booleene). Boolean tip are doar două tipuri de valori: Adevărat sau fals. Există mai multe tipuri de caractere , dintre care majoritatea există pentru a sprijini internaționalizarea. Cel mai de bază tip de caracter este char. Un caracter are aceeași dimensiune ca un singur octet al mașinii, adică un singur octet.
Cele Tipurile integrale pot fi semnate sau nesemnate.
Tip semnat : Reprezintă numere negative sau pozitive (inclusiv zero). Într-un tip semnat, intervalul trebuie împărțit uniform între valorile + ve și -ve. Astfel, un caracter semnat pe 8 biți va conține valori de la -127 la 127.
Tip nesemnat : într-un tip nesemnat, toate valorile sunt> = 0. Un caracter nesemnat pe 8 biți poate conține de la 0 la 255 (ambele inclusiv).
Numele sau identificatorii variabilei
Identificatorii pot fi compuși din câteva litere, cifre și caracterul de subliniere sau o combinație a acestora. Nu se impune nicio limită pentru lungimea numelui.
Identificatorii trebuie
- începeți fie cu o literă, fie cu un subliniat ('_').
- Și sunt sensibile la majuscule și minuscule; literele mari și mici sunt distincte:
// definește patru variabile int diferite
int guru99, gurU99, GuRu99, GURU99;
Limbajul C ++ a rezervat câteva nume pentru utilizarea sa.
Există multe convenții acceptate pentru numirea variabilelor în diferite limbaje de programare. Respectarea acestor convenții poate îmbunătăți lizibilitatea programului.
- Un identificator ar trebui să ofere cel puțin o indicație a semnificației sale.
- Numele variabilelor sunt de obicei minuscule-guru99, nu Guru99 sau GURU99.
- Clasele pe care le definim încep de obicei cu o literă mare.
- Identificatorii care conțin mai multe cuvinte ar trebui să distingă vizual fiecare cuvânt. De exemplu, guru99_website nu guru99website.
Declarație și definiție variabilă C ++
O declarație a unei variabile face cunoscut programului un nume în domeniul în care este definit. Exemplu:
int a=5;int b;char c='A';
int a,b;a=b=1000;
List initializationint a(5);int b{5};
Calificativ Const în C ++
Să presupunem că există o dimensiune buffs variabilă care stabilește numărul de intrări care trebuie preluate de la utilizator. Aici, nu vrem să schimbăm valoarea buffsize pe tot parcursul programului. Vrem să definim o variabilă a cărei valoare știm că nu ar trebui să se schimbe.
În acest caz, utilizați cuvântul cheie const
const int bufSize = 512; // input buffer size
Aceasta definește bufSize ca o constantă. Orice încercare de atribuire sau modificare a bufSize dă o eroare.
Aici, nu putem schimba valoarea unui obiect const după ce îl creăm, trebuie să fie obligatoriu să fie declarat și inițializat. În caz contrar, compilatorul aruncă o eroare.
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
Scopul variabilelor în C ++
Un scop este un interval al unui program în care o variabilă are o semnificație. În cea mai mare parte același nume poate fi folosit pentru a se referi la entități diferite din domenii diferite. Variabilele sunt vizibile din punctul în care sunt declarate până la sfârșitul domeniului în care apare declarația lor.
#includeint 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 < Acest program definește 3 nume, și anume, principal, sumă și val. Folosește numele spațiului de nume std, împreună cu alte două nume din acel spațiu de nume-cout și endl.
- Numele funcției „principal” este definit în afara acoladelor. Numele funcției main-asemănător celor mai multe alte nume definite în afara unei funcții-are un scop global. Ceea ce înseamnă că, odată declarate, numele care se află la nivel global sunt accesibile pe tot parcursul programului.
- Suma variabilă este definită în cadrul blocului care este corpul funcției principale. Poate fi accesat din punctul său de declarație și în restul corpului funcției principale. Cu toate acestea, nu în afara acestuia. Aceasta înseamnă că suma variabilă are sfera de blocare .
- Variabila val este definită în domeniul „pentru instrucțiune”. Poate fi ușor utilizat în acea afirmație, dar nu în altă parte a funcției principale. Are scop local .
Domeniul imbricat
Domeniul de aplicare poate conține alte domenii. Domeniul conținut (sau imbricat) este denumit domeniu interior. Domeniul conținut este domeniul exterior.
#includeusing 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;} Ieșirea # 1 apare înainte de definiția locală a reutilizat. Astfel, această ieșire
declarația este cea care folosește numele reutilizat care este definit în domeniul global. Această declarație rezultă
42 0
Ieșirea # 2 apare după definiția locală a reutilizat. Acum este în domeniul de aplicare. Prin urmare, această a doua instrucțiune de ieșire folosește pur și simplu obiectul local denumit reutilizat mai degrabă decât unul global și ieșiri
0 0
Ieșirea nr. 3 înlocuiește regulile implicite de scoping folosind operatorul de scop. Scopul global nu are nume. Astfel, atunci când operatorul scopului (: :) are partea stângă goală. O interpretează ca o cerere de a prelua numele în partea dreaptă a sferei globale. Astfel, expresia folosește reutilizarea globală și rezultatele
42 0
Conversie tip variabil
O variabilă de un tip poate fi convertită în alta. Este cunoscută sub numele de „Conversie de tip”. Să vedem regulile pentru conversia diferitelor tipuri de variabile C ++:
Atribuirea non-bool unei variabile bool produce fals dacă valoarea este 0 și adevărat în caz contrar.
bool b = 42; // b is trueAtribuirea unui bool la unul dintre celelalte tipuri aritmetice produce 1 dacă boolul este adevărat și 0 dacă boolul este fals.
bool b = true;int i = b; // i has value 1Atribuirea unei valori în virgulă mobilă unei variabile de tip int produce valoarea care este trunchiată. Valoarea stocată este partea dinaintea punctului zecimal.
int i = 3.14; // i has value 3Atribuirea unei valori int unei variabile de tip float are ca rezultat ca partea fracțională să devină zero. Precizia se pierde, de obicei, dacă întregul are mai mulți biți decât variabila plutitoare.
Int i=3;double pi = i; // pi has value 3.0Dacă încercăm să atribuim o valoare în afara intervalului unei variabile de tip nesemnat, rezultatul este restul valorii% (modulo)
De exemplu, un tip de caracter pe 8 biți nesemnat poate conține valori de la 0 la 255, inclusiv. Atribuirea unei valori în afara acestui interval va avea ca rezultat ca compilatorul să atribuie restul acelei valori modulo 256. Prin urmare, conform logicii de mai sus, atribuirea -1 la un caracter nesemnat de 8 biți conferă acelui obiect valoarea 255.
unsigned char c = -1; // assuming 8-bit chars, c has value 255Dacă încercăm să atribuim o valoare în afara intervalului unui obiect de tip semnat, rezultatul este imprevizibil. Este nedefinit. Este posibil ca programul să funcționeze la exterior sau să se blocheze sau să producă valori de gunoi.
signed char c2 = 256; // assuming 8-bit chars, the value of c2 is undefinedCompilatorul aplică același tip de conversii atunci când folosim o valoare de un tip în care se așteaptă o valoare de alt tip.
int i = 42;if (i) // condition will evaluate as truei = 0;Dacă această valoare = 0, atunci condiția este falsă; toate celelalte valori (diferite de zero) produc adevărat. Prin același concept, atunci când folosim un bool într-o expresie aritmetică, valoarea sa este întotdeauna convertită fie la 0, fie ca 1. Ca urmare, utilizarea unui bool într-o expresie aritmetică este de obicei aproape sigur incorectă.
Atenție: nu amestecați tipurile semnate și nesemnate
Expresiile care combină semnate și nesemnate pot produce rezultate surprinzătoare și greșite atunci când valoarea semnată este negativă. După cum sa discutat mai sus, valorile semnate sunt convertite automat în nesemnate.
De exemplu, într-o expresie aritmetică cum ar fi
x* yDacă x este -1 și y este 1 și dacă ambele x și y sunt int, atunci valoarea este, așa cum era de așteptat, -1.
Dacă x este int și y sunt nesemnate, atunci valoarea acestei expresii depinde de câți biți are un întreg pe mașina de compilare. Pe mașina noastră, această expresie produce 4294967295.
Înregistrați variabile
Variabilele de registre sunt mai rapid accesibile în comparație cu variabilele de memorie. Deci, variabilele care sunt frecvent utilizate într-un program C ++ pot fi introduse în registre utilizând cuvântul cheie register . Cuvântul cheie register spune compilatorului să stocheze variabila dată într-un registru. Este alegerea compilatorului dacă o introduceți sau nu într-un registru. În general, compilatorii înșiși fac diverse optimizări, care includ introducerea unor variabile în registru. Nu există o limită a numărului de variabile de registru într-un program C ++. Dar este posibil ca compilatorul să nu stocheze variabila într-un registru. Acest lucru se datorează faptului că memoria registrului este foarte limitată și este utilizată în general de sistemul de operare.
A defini:
register int i;Comentarii
Comentariile sunt porțiunile codului ignorate de compilator. Permite programatorului să noteze în zonele relevante ale codului sursă / programului. Comentariile vin fie sub formă de bloc, fie cu linii simple. Comentariile programului sunt expuneri explicative. Poate fi inclus în codul C ++, care ajută pe oricine îi citește codul sursă. Toate limbajele de programare permit o anumită formă de comentarii. C ++ acceptă comentarii atât pe linie cât și pe mai multe linii.
- Comentariile pe o singură linie sunt cele care încep cu // și continuă până la sfârșitul liniei. Dacă ultimul caracter dintr-o linie de comentariu este un \, atunci comentariul va continua în rândul următor.
- Comentariile pe mai multe linii sunt cele care încep cu / * și se termină cu * /.
/* This is a comment *//* C++ comments can also* span multiple lines*/Secvențe de evadare
Unele caractere, cum ar fi backspace și caractere de control, nu au nicio imagine vizibilă. Astfel de caractere sunt cunoscute ca caractere neprimabile. Alte caractere (ghilimele simple și duble, semnul întrebării și bară inversă) au o semnificație specială în numeroasele limbaje de programare.
Programele noastre nu pot utiliza niciunul dintre aceste caractere direct. În schimb, putem folosi o secvență de evadare pentru a reprezenta un astfel de caracter. O secvență de evadare începe cu o bară inversă.
Limbajul de programare C ++ definește mai multe secvențe de evadare:
Ce face?
Caracter
Linie nouă
\ n
Fila verticală
\ v
Backslash
\\
Retur transport
\ r
Filă orizontală
\ t
Backspace
\ b
Semnul întrebării
\?
Formfeed
\ f
Alertă (clopot)
\A
Citat dublu
\ "
Citat unic
\ '
Folosim o secvență de evadare ca și cum ar fi un singur caracter:
cout << '\n'; // prints a newlinecout << "\tguru99!\n"; // prints a tab followed by "guru99!" and a newlineDe asemenea, putem scrie secvențe de evadare generalizate \ x urmate de una sau mai multe cifre hexazecimale. Sau folosim un \ urmat de una, sau două sau trei cifre octale. Secvența de evadare generalizată reprezintă valoarea numerică a caracterului. Câteva exemple (presupunând setul de caractere Latin-1):
\7 (bell) \12 (newline) \40 (blank)\0 (null) \115 ('M') \x4d ('M')Putem folosi secvențe de evadare predefinite, deoarece folosim orice alt caracter.
cout << "Hi \x4dO\115!\n"; // prints Hi MOM! followed by a newlinecout << '\115' << '\n'; // prints M followed by a newlinerezumat
- O variabilă C ++ ne oferă o capacitate de stocare numită.
- Tipuri variabile C ++: int, double, char, float, string, bool etc.
- Domeniul conținut (sau imbricat) este denumit domeniu interior, iar domeniul conținut este domeniul exterior.
- O variabilă de un tip poate fi convertită în alta. Este cunoscută sub numele de „Conversie de tip”.
- Variabilele de registre sunt mai rapid accesibile în comparație cu variabilele de memorie.
- Comentariile sunt porțiunile codului ignorate de compilator.
- Unele caractere, cum ar fi backspace și caractere de control, nu au nicio imagine vizibilă.