Tipul de date reprezintă un concept foarte important în C/C++. Orice dată (constantă sau variabilă) este de un numit tip. Tipul datei precizează ce valori poate avea acea dată și ce operații se pot face cu ea.

În C/C++ tipurile de date sunt:

  1. Tipuri simple
    • Tipul int
    • Tipurile float și double
    • Tipul char
    • Tipul pointer
    • Tipul bool
    • Tipul void
  2. Tipuri derivate
    • Tipul tablou
    • Tipul structură/clasa
    • Tipul enumerare

Acest articol se referă numai la tipurile simple.

Tipul int

  • permite memorarea de valori întregi – pozitive sau negative;
  • o dată de tip int ocupă (de regulă) 4 octeți; astfel, poate memora valori întregi din \([-2^{31},2^{31}-1]\), adică \([-2.147.483.648,2.147.483.647]\).

Exemplu

int n = 100;

În probleme, dacă datele întregi nu depășesc (aproximativ) 2.000.000.000 folosim tipul int. Pentru datele care depășesc această valoare vom folosi tipul long long.

Tipurile float și double

  • memorează numere reale;
  • separatorul zecimal este punctul .
  • se mai numesc tipuri în virgulă mobilă;
  • datele reale pot fi date în forma fixă sau în forma științifică (exponențială);
  • tipul float se reprezinta pe 4 octeți;
  • tipul double se reprezinta pe 8 octeți;

Exemplu

float p = 3.14, r = 2.5;
double A = p * r * r;

Datele reale pot fi scrise în forma științifică (exponențială):

double x = 1.24E+07; // înseamnă 1.24 * 10^7

Tipul char

  • se folosește pentru caractere ASCII
  • stochează un singur caracter
  • se reprezintă pe 1 octet
  • caracterele sunt delimitate prin apostrof

Exemplu

char c='A';

În C++, o dată de tip char nu memorează caracterul, ci un număr corespunzător caracterului. Mai multe detalii aici.

Tipul pointer

  • o dată de tip pointer memorează o adresă de memorie – de exemplu adresa unei variabile;

Informații despre pointeri găsiți în acest articol.

Tipul bool

Anumite operații care se fac cu datele au ca rezultat valori de adevăr: adevărat sau false.

  • tipul bool conține două valori: true și false ;
  • se reprezintă (de regulă) pe 1 octet;
  • valorile numerice ale lor sunt 1 și 0;
  • se folosesc în instrucțiuni condiționale și repetitive

Exemplu

bool pp = false;

Tipul void

  • cuvântul void înseamnă “nimic” sau “fără valoare”;
  • datele de tip void nu au valori și nu se pot face cu ele operații;
  • îl folosim pentru funcții și pointeri

Nu putem declara variabile de tipul void.

Modificatori de tip

Permit schimbarea modului în care se face reprezentarea internă a unei date. Aceștia sunt:

  • signed
  • unsigned
  • short
  • long

Pot fi aplicați tipurilor

  • int
  • double
  • char
Tip de date Reprezentare Înțeles
signed int 4 octeți cu semn La fel ca int. Valori întregi din \([-2^{31},2^{31}-1]\), adică \([-2147483648,2147483647]\).
unsigned int 4 octeți fără semn Valori naturale din \([0,2^{32}-1]\), adică \([0 , 4294967295]\).
long 4 octeți cu semn La fel ca int. Echivalent cu long int.
unsigned long 4 octeți fără semn La fel ca unsigned int. Echivalent cu unsigned long int.
short 2 octeți cu semn Valori întregi mici din \([-2^{15},2^{15}-1]\), adică \([-32768,32767]\). Echivalent cu short int.
unsigned short 2 octeți fără semn Valori naturale mici din \([0 , 2^{16}-1]\), adică \([0 , 65535]\). Echivalent cu unsigned short int.
long long 8 octeți cu semn Valori întregi foarte mari din \([-2^{63},2^{63}-1]\). Echivalent cu long long int
unsigned long long 8 octeți fără semn Valori naturale foarte mari din \([0,2^{64}-1]\). Echivalent cu unsigned long long int
signed char 1 octet cu semn Caractere. Valorile numerice sunt din \([-2^{7},2^{7}-1]\), adică \([-128,127]\).
unsigned char 1 octet fără semn Caractere. Valorile numerice sunt din \([0,2^{8}-1]\), adică \([0,255]\).
long double 10, 12, 16 Memorează numere reale mari. Reprezentarea depinde de compilator, dar trebuie să ocupe cel puțin la fel ca double.