C++ Variabile și tipuri: Int, Char, Float, Double, String și Bool

Variabile în C++

A C++ variabila ne oferă o capacitate de stocare numită. Permite programatorului să manipuleze datele în funcție de nevoi. Fiecare variabilă are un tip în C++. Tipul de variabilă ajută la determinarea dimensiunii și aspectului hărții de memorie a variabilei, a gamei de valori care pot fi stocate în acea memorie și a setului de operații care i se pot aplica.

Tipuri de bază de variabile în C++

Iată tipurile de bază de C++ variabile:

Int:

Un număr întreg este un literal numeric (asociat cu numere) fără nicio parte fracțională sau exponențială. Exemplu. 120, -90 etc.

Double:

Este o valoare în virgulă mobilă cu precizie dublă. Exemplu: 11.22, 2.345

Char:

Un caracter literal este creat prin includerea unui singur caracter între ghilimele simple. De exemplu: „a”, „m”, „F”, „P”, „}” etc.

Pluti:

Un literal în virgulă mobilă este un literal numeric care are fie o formă fracțională, fie o formă de exponent. De exemplu: 1.3, 2.6

Literale șir:

Un șir literal este o secvență de caractere cuprinsă între ghilimele duble. De exemplu: „Ce mai faci?”

Bool:

Deține valoarea booleană adevărată sau falsă.

Regulile de declarare a variabilelor în C++

Iată câteva reguli comune pentru denumirea unei variabile:

  • A C++ numele variabilei poate avea doar alfabete, numere și liniuță de subliniere.
  • A C++ numele variabilei nu poate începe cu un număr.
  • Numele variabilelor nu trebuie să înceapă cu un caracter majuscul.
  • Un nume de variabilă folosit în C++ nu poate fi un cuvânt cheie. De exemplu, int este un cuvânt cheie care este folosit pentru a desemna numere întregi.
  • A C++ numele variabilei poate începe cu un caracter de subliniere. Cu toate acestea, nu este considerată o practică bună.

C++ Tipuri de date variabile

C++ definește un întreg set de tipuri primitive

anula type nu are valori asociate cu acesta și poate fi folosit doar în câteva circumstanțe. Este cel mai frecvent ca tipul de returnare a funcțiilor care nu returnează o valoare.

tipuri aritmetice includ caractere, numere întregi, valori booleene și numere în virgulă mobilă. Tip aritmetic dacă este împărțit în 2 categorii

  1. Tipuri cu virgulă mobilă. Float (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, float-urile sunt reprezentate de 32 de biți, dublele în 64 de biți și dublele lungi fie de 96, fie de 128 de biți.
  2. Tipuri integrale (care includ caractere, numere întregi și tipuri booleene). The boolean type are doar două tipuri de valori: True sau False. Sunt câteva car de război tipuri, dintre care majoritatea există pentru a sprijini internaționalizarea. Cel mai elementar tip de caracter este char. Un caracter are aceeași dimensiune ca un singur octet de mașină, adică un singur octet.

Tipuri integrale poate fi semnat sau nesemnat.

Tip semnat: Ele reprezintă numere negative sau pozitive (inclusiv zero). Într-un tip cu semn, intervalul trebuie împărțit uniform între valorile +ve și -ve. Astfel, un caracter semnat pe 8 biți va păstra 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).

C++ Tipuri de date variabile

Numele sau identificatorii variabilei

Identificatorii pot fi alcătuiți din unele litere, cifre și caracterul de subliniere sau o combinație a acestora. Nu se impune nicio limită pentru lungimea numelui.

Identificatorii trebuie

  • începe fie cu o literă, fie cu o liniuță de subliniere („_”).
  • Și sunt sensibile la majuscule; literele mari și mici sunt distincte:

// definește patru variabile int diferite

int guru99, gurU99, GuRu99, GURU99;

C++ limba a rezervat unele nume pentru utilizarea sa.

Numele sau identificatorii variabilei

Există multe convenții acceptate pentru denumirea 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 anumită indicație a semnificației sale.
  • Numele variabilelor sunt de obicei litere mici - 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.

C++ Declarație și definiție variabile

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 initialization
int a(5);
int b{5};

Calificarea Const în C++

Să presupunem că există o dimensiune variabilă care indică numărul de intrări care trebuie luate de la utilizator. Aici, nu vrem să schimbăm valoarea buffsize pe tot parcursul programului. Dorim 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 a atribui sau de a modifica bufSize dă o eroare.

Aici, nu putem schimba valoarea unui obiect const după ce îl creăm, trebuie să fie obligatoriu declarat și inițializat. În caz contrar, compilatorul aruncă o eroare.

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

Domeniul de aplicare al variabilelor în C++

Un domeniu de aplicare 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 face referire la entități diferite în domenii diferite. Variabilele sunt vizibile din punctul în care sunt declarate până la sfârșitul domeniului în care apare declarația lor.

#include <iostream>	
int main()	
{	
    int sum = 0;	
    // sum values from 1 through 10 inclusive	
    for (int val = 1; val <= 10; ++val)	
        sum += val;  // equivalent to sum = sum + val	
    cout << "Sum of 1 to 10 inclusive is "<< sum <<endl;	
    return 0;	
}	 

Acest program definește 3 nume, adică 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—ca majoritatea celorlalte nume definite în afara unei funcții—are un domeniu global. Ceea ce înseamnă că odată declarate, nume care sunt la amploare globală sunt accesibile pe tot parcursul programului.
  • Suma variabilă este definită în sfera blocului care este corpul funcției principale. Acesta poate fi accesat din punctul său de declarare și în restul corpului funcției principale. Cu toate acestea, nu în afara ei. Aceasta înseamnă că suma variabilă are domeniul de aplicare al blocului.
  • Variabila val este definită în domeniul de aplicare a „for statement”. Poate fi folosit cu ușurință în această declarație, dar nu în altă parte în funcția principală. Are domeniul de aplicare local.

Domeniu imbricat

Domeniul de aplicare poate conține alte domenii. Sfera conținută (sau imbricată) este denumită domeniul interior. Domeniul de aplicare este domeniul exterior.

#include <iostream>	
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 name	
int reused = 42;  // reused has global scope	
int main()	
{	
    int unique = 0; // unique has block scope	
    // output #1: uses global reused; prints 42 0	
    cout << reused << " " << unique << endl;	
    int reused = 0; // new, local object named reused hides global reused	
    // output #2: uses local reused; prints 0 0	
    cout << reused << " " << unique << endl;	
    // output #3: explicitly requests the global reused; prints 42 0	
    cout << ::reused << " " << unique << endl;	
    return 0;	
}	 

Ieșire #1 apare înaintea definiției locale a reutilizarii. Astfel, această ieșire

declarația este cea care folosește numele reutilizat care este definit în domeniul global. Această declarație iese

42 0

Ieșire #2 apare după definiția locală a reutilizarii. Acum este în domeniu. Prin urmare, această a doua instrucțiune de ieșire folosește pur și simplu obiectul local numit reutilizat, mai degrabă decât unul global și iese

0 0

Ieșire #3 suprascrie regulile implicite de acoperire folosind operator de domeniu. Sfera globală nu are nume. Astfel, atunci când operatorul scop (::) are o parte stângă goală. O interpretează ca o solicitare de a prelua numele din partea dreaptă a domeniului global. Astfel, expresia folosește global reutilizat și outputs

42 0

Conversie tip variabilă

O variabilă de un tip poate fi convertită în altul. Este cunoscut sub numele de „Conversie de tip”. Să vedem regulile de conversie diferită C++ tipuri de variabile:

Atribuirea non-bool unei variabile bool produce false dacă valoarea este 0 și adevărată în caz contrar.

bool b = 42;            // b is true

Atribuirea unui bool unuia dintre celelalte tipuri aritmetice dă 1 dacă bool este adevărat și 0 dacă bool este fals.

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

Atribuirea unei valori în virgulă mobilă unei variabile de tip int produce valoarea care este trunchiată. Valoarea care este stocată este partea dinaintea virgulei zecimale.

int i = 3.14;               // i has value 3

Atribuirea unei valori int unei variabile de tip float are ca rezultat ca partea fracționară să devină zero. Precizia este de obicei pierdută dacă întregul are mai mulți biți decât poate găzdui variabila flotantă.

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

Dacă încercăm să atribuim o valoare în afara intervalului unei variabile de tip fără semn, rezultatul este restul valorii %(modulo)

De exemplu, un tip de caracter nesemnat pe 8 biți poate conține valori de la 0 la 255, inclusiv. Atribuirea unei valori în afara acestui interval va duce la atribuirea de către compilator a restului acelei valori modulo 256. Prin urmare, prin logica de mai sus, atribuirea lui –1 unui caracter nesemnat pe 8 biți dă obiectului valoarea 255.

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

Dacă încercăm să atribuim o valoare în afara intervalului unui obiect de tip semn, rezultatul este imprevizibil. Este nedefinit. Programul ar putea părea că funcționează în exterior sau s-ar putea prăbuși sau ar putea produce valori de gunoi.

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

Compilatorul aplică același tip de conversii atunci când folosim o valoare de un tip în care este așteptată o valoare de alt tip.

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

Dacă această valoare = 0, atunci condiția este falsă; toate celelalte valori (diferite de zero) sunt adevărate. Prin același concept, atunci când folosim un bool într-o expresie aritmetică, valoarea sa este întotdeauna convertită fie la 0, fie la 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 amestecă semnate și nesemnate pot da 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ă ca

x* y

Dacă x este -1 și y este 1 și dacă ambii x și y sunt int, atunci valoarea este, așa cum era de așteptat, -1.

Dacă x este int și y nu are semn, atunci valoarea acestei expresii depinde de câți biți are un întreg pe mașina de compilare. Pe mașina noastră, această expresie dă 4294967295.

Înregistrați variabile

Variabilele de registre sunt mai rapid de accesat în comparație cu variabilele de memorie. Deci, variabilele care sunt utilizate frecvent în a C++ programul poate fi introdus în registre folosind Inregistreaza-te cuvânt cheie. Cuvântul cheie register îi spune compilatorului să stocheze variabila dată într-un registru. Este alegerea compilatorului dacă îl pune într-un registru sau nu. În general, compilatorii înșiși fac diverse optimizări care includ punerea unor variabile în registru. Nu există limită pentru numărul de variabile de registru într-un C++ program. Dar compilatorul poate să nu stocheze variabila într-un registru. Acest lucru se datorează faptului că memoria registrului este foarte limitată și este utilizată cel mai în general de sistemul de operare.

A defini:

register int i;

Comentarii

Comentariile sunt porțiunile de cod ignorate de compilator. Acesta permite programatorului să facă note în zonele relevante ale codului/programului sursă. Comentariile vin fie sub formă de bloc, fie în rânduri simple. Comentariile programului sunt declarații explicative. Poate fi inclus în C++ cod care ajută pe oricine să-și citească codul sursă. Toate limbajele de programare permit o anumită formă de comentarii. C++ acceptă atât comentarii pe o singură linie, cât și pe mai multe rânduri.

  • Comentarii pe o singură linie sunt cele care încep cu // și continuă până la sfârșitul rândului. Dacă ultimul caracter dintr-o linie de comentariu este un \, atunci comentariul va continua în rândul următor.
  • Comentarii pe mai multe rânduri sunt cele care încep cu /* și se termină cu */.
/* This is a comment */
/* C++ comments can  also 
* span multiple lines 
*/

Secvențe de evacuare

Unele caractere, cum ar fi backspace și caracterele de control, nu au nicio imagine vizibilă. Astfel de caractere sunt cunoscute ca caractere care nu pot fi imprimate. Alte caractere (ghilimele simple și duble, semnul de întrebare și bara oblică inversă) au o semnificație specială în numeroasele limbaje de programare.

Programele noastre nu pot folosi niciunul dintre aceste caractere în mod direct. În schimb, putem folosi o secvență de escape pentru a reprezenta un astfel de caracter. O secvență de evadare începe cu o bară oblică inversă.

C++ limbaj de programare definește mai multe secvențe de evacuare:

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
Double cita \ "
ghilimele unice \'

Folosim o secvență de escape ca și cum ar fi un singur caracter:

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

De asemenea, putem scrie secvențe generalizate de evadare \x urmate de una sau mai multe cifre hexazecimale. Sau folosim un \ urmat de una, sau două sau trei cifre octale. Secvența de escape 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, așa cum folosim orice alt caracter.

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

Rezumat

  • A C++ variabila ne oferă o capacitate de stocare numită.
  • C++ tipuri de variabile: int, double, car de război, float, string, bool etc.
  • Domeniul de aplicare conținut (sau imbricat) este denumit domeniul interior, iar domeniul de aplicare este cel exterior.
  • O variabilă de un tip poate fi convertită în altul. Este cunoscut sub numele de „Conversie de tip”.
  • Variabilele de registre sunt mai rapid de accesat în comparație cu variabilele de memorie.
  • Comentariile sunt porțiunile de cod ignorate de compilator.
  • Unele caractere, cum ar fi caracterele backspace și control, nu au nicio imagine vizibilă.