1.3. Tipuri de date de baza

2018/12/13 in Programare in C

Orice limbaj de programare ofera programatorului un numar de tipuri de date de baza, specificate prin cuvinte cheie.

In C, tipurile de date se refera la un sistem de declarare a variabilelor si a diferitelor tipuri de functii. Tipul variabilei va determina spatiul de memorie alocat si interpretarea modelului de biti ocupat.

Tipurile de date pot fi clasificate dupa cum urmeaza:

Nr. Crt. Tipul si descrierea
1 Tipuri de baza

Acestea sunt tipuri aritmetice si pot fi impartite in continuare in: (a) tipuri intregi si (b) tipuri flotante.
2 De tip enumerare

Si ele sunt tipuri aritmetice si sunt folosite pentru a defini variabile ce pot avea doar anumite valori intregi discrete in cadrul programului.
3 De tip void

Specificatorul tip void indica faptul ca nu este disponibila nicio valoare.
4 Tipuri derivate

Acestea includ: (a) Pointeri, (b) Tablou (sau Array), (c) Structuri, (d) Uniuni, (e) de tip Functie.

Tipuri de date de baza intregi:

Tipuri de date de baza flotante:

Specificarea tipului Dimensiune in byti Modul de reprezentare Intervalul de valori
char 1 byte codul ASCII al caracterului [-128, 127] sau [0, 255]
unsigned char 1 byte codul ASCII al caracterului [0, 255]
signed char 1 byte codul ASCII al caracterului [-128, 127]
short 2 byti intreg reprezentat prin complement fata de doi [-32768, 32767]
unsigned short 2 byti intreg reprezentat prin complement fata de doi [0, 65535]
int 2 sau 4 byti intreg reprezentat prin complement fata de doi [-32768, 32767] sau
[-2147483648, 2147483647]
unsigned int 2 sau 4 byti intreg fara semn [0, 65535] sau
[0, 4294967295]
long 4 byti intreg reprezentat prin complement fata de doi [-2147483648, 2147483647]
unsigned long 4 byti intreg fara semn [0, 4294967295]
float 4 byti reprezentare flotanta in simpla precizie (6 cifre dupa virgula) [1.2E-38, 3.4E+38]
double 8 byti reprezentare flotanta in dubla precizie (15 cifre dupa virgula) [2.3E-308, 1.7E+308]
long double 10 byti reprezentare flotanta in dubla precizie (19 cifre dupa virgula) [3.4E-4932, 1.1E+4932]

Operatorul sizeof()

Pentru a afla marimea exacta a unui tip de data sau variabila se poate folosi operatorul sizeof. Expresiile sizeof(type) returneaza marimea in byti a memoriei alocate pentru un obiect sau un tip de data. Urmatorul program afiseaza marimea memoriei alocate tipului int pe orice calculator:

#include <stdio.h>
#include <limits.h>

int main() {
   printf("Memoria alocata unui numar intreg este : %d \n", sizeof(int));
   
   return 0;
}

In Linux, programul va produce urmatorul rezultat:

Memoria alocata unui numar intreg este : 4

Fisierul de header float.h defineste macro-uri ce permit folosirea valorilor pentru tipurile de date flotante si alte detalii despre reprezentarea binara a numerelor reale.

Exemplul urmator afiseaza marimea memoriei ocupate de un numar flotant si intervalul de valori:

#include <stdio.h>
#include <float.h>

int main() {
   printf("Memoria alocata unui numar real este: %d \n", sizeof(float));
   printf("Valoarea minima a unui numar real pozitiv este: %E\n", FLT_MIN );
   printf("Valoarea maxima a unui numar real pozitiv este: %E\n", FLT_MAX );
   printf("Valoarea preciziei este: %d \n", FLT_DIG );
   
   return 0;
}

Dupa compilare si executie in Linux obtinem:

Memoria alocata unui numar real este: 4
Valoarea minima a unui numar real pozitiv este: 1.175494E-38
Valoarea maxima a unui numar real pozitiv este: 3.402823E+38
Valoarea preciziei este: 6

NOTE

1.4. Structura unei functii