Fiecare tip de date este scris pe un anumit număr de octeți (bytes, o grupare de 8 biți), iar acest număr de octeți impune o limită. Fiind stocate în memorie în cod binar dimensiunile sunt direct influențate de numărul de cifre în baza 2 din reprezentarea acestora.
Tipuri
Numerice
Naturale
În cazul numerelor naturale , declararea variabilei trebuie să fie precedată de unsigned pentru a semnala compilatorului că numărul nu are semn.
unsigned shortfolosește 2 bytes și ia valori din:unsigned intfolosește 4 bytes și ia valori din:unsigned long longfolosește 8 bytes și ia valori din: De asemenea putem declaraunsigned x;care este echivalent cuunsigned int x;
Întregi
În cazul numerelor întregi , declararea variabilei poate fi precedată opțional de signed pentru a semnala compilatorului că numărul nu are semn. Dacă nu se specifică signed sau unsigned compilatorul presupune că avem valori signed. Primul bit este rezervat pentru semn.
shortfolosește 2 bytes și ia valori din:intfolosește 4 bytes și ia valori din:long longfolosește 8 bytes și ia valori din:
Raționale/Reale
Practic pot fi stocate doar numere raționale , iar pentru numerele reale se stochează doar aproximările raționale.
floatfolosește 4 bytesdoublefolosește 8 bytes
Boolean
Tipul bool stochează doar 1 și 0 (sau true respectiv false). Deși el stochează o valoare binară, care poate fi teoretic reprezentată printr-un bit, el folosește 1 byte (8 biți) pentru că nu avem acces ca programatori la biți, doar la bytes.
boolfolosește 1 byte
Caracter
charfolosește 1 byte (din cauza codului ASCII)
Stocarea numerelor întregi
Luăm ca exemplu tipul de date int, care are 4 bytes, deci 32 de biți. În acest caz, scrierea numărului trebuie să se încadreze în limita a 32 de biți
folosește 33 de biți, iar (vezi mai multe explicații)
unsigned
Cea mai mare valoare este .

signed
Pentru reprezentarea numerelor cu semn, se va folosi un bit dintre cei alocați scrierii numărului pentru a reprezenta semnul. 1 semnifica negativ si 0 semnifica pozitiv, iar având în vedere că am folosit un bit, vor rămâne cu 1 bit mai puțin pentru reprezentarea valorilor. Din acest motiv, vom vedea ca atunci cand reprezentam numerele signed valorile sunt mai mici.
Având in vedere ca “blocăm” bitul 31 al reprezentării, ne rămân 31 de biți pentru valoarea efectivă. Din acest motiv, folosind doar 31 de biti, cea mai mare valoare pozitivă care se poate retine pe acest tip de date este . Din acest punct de vedere, în domeniul numerelor negative ar trebui sa avem cel mai mic număr egal cu . Dar deoarece este considerat valoare pozitivă, nu îl mai reprezentăm și ca număr negativ, deci putem memora o valoare în plus la numere negative. Deci cea mai mică valoare care poate fi memorată pentru signed int este .
- Este important de precizat că deși
unsignedîntotdeauna poate stoca o valoare mai mare decâtsigned(evident comparândintcuint,shortcushort, etc), intervalul (sau numărul) de numere care pot fi stocate are aceeași lungime.