Constructiile de baza ale limbajului C – Tipuri de date

Un tip de date reprezintă mulţimea valorilor pe care le pot lua variabilele într-un limbaj de programare.

În C avem tipuri de date predefinite fundamentale (de bază) (tipurile aritmetice întregi şi reale şi tipul caracter) şi tipuri de date derivate, pornind de la tipurile fundamentale. Se consideră că în C există 5 tipuri de date de bază: caracter (char), întreg (int), în virgulă mobilă (float), în virgulă mobilă dublă precizie (double) şi tipul nedefinit (void). Dimensiunea şi domeniul de valori a acestor tipuri de date pot să varieze în funcţie de tipul procesorului şi compilatorul C utilizat. în toate implementările de C, un caracter ocupă întotdeauna un octet. Un întreg va ocupa în general doi octeţi, dar pentru a asigura portabilitatea unui program, acolo unde este nevoie de a cunoaşte spaţiul ocupat de un tip de date, se va utiliza operatorul sizeof.

În cadrul tipurilor derivate avem:
• tipuri structurate -tablouri, structuri, uniuni, câmpuri de biţi, enumerări
• tipuri funcţie -caracterizate atât prin tipul rezultatului furnizat cât şi prin numărul şi tipul argumentelor necesare pentru obţinerea rezultatului
• tipuri pointer -permit adresări indirecte la entităţi de diverse tipuri

Tipuri aritmetice
Tipurile aritmetice de bază ce se pot utiliza în limbajul C sunt: char, int, float şi double.

Tip Lungime Domeniu
char 8 -127 -> +127
int 16 -32.767 -> +32.767
float 32 10 la -37 -> 10 la 37(șase zecimale exacte)
double 64 10 la -307 -> 10 la 307(zece zecimale exacte)

Tipurilor de bază (cu excepţia tipului void) li se pot aplica modificatori de tip: signed, unsigned, long şi short. Prin convenţie, în cazul tipurilor şi a modificatorilor short, int şi long se consideră implicită reprezentarea cu semn (deci int este echivalent cu signed int). De asemenea, long float este echivalent cu double.

Tipul întreg
Un întreg este un şir de cifre care sunt eventual precedate de un semn. Intern se reprezintă pe 16 sau 32 de biţi în complement faţă de 2. Forţarea reprezentării pe lungime dublă se poate face adăugând la sfârşitul şirului de cifre litera 1 sau L. Se pot specifica întregi în baza 8 (un număr este considerat ca fiind în octal dacă începe cu un o nesemnificativ) sau în baza 16 (un număr este hexagesimal dacă începe cu construcţii de forma ox sau oX urmate de cifre în baza 16).

Exemple:
int numar_octal=045;
int numar_hexa=0x25;

Constanta zecimală 37 poate fi scrisă ca 045 în octal şi ca 0x25 sau 0X25 în hexagesimal.

Tipul flotant
Un număr flotant este un număr raţional care se compune din semn (dacă e cazul), o parte întreagă (care poate fi vidă), o parte fracţionară (care şi ea poate fi vidă) litera e sau E şi un exponent (care şi ele pot lipsi). Nu pot fi vide toate componentele. Partea întreagă este o succesiune de cifre hexagesimale. Partea fracţionară se compune dintr-un punct urmat de o succesiune de cifre zecimale, succesiune care poate fi vidă.

Exemple:
-1.5e-5
2.e-4
12.4

Tipul caracter
Tipul caracter în C se reprezintă pe un octet şi are ca valoare codul ASCII al caracterului respectiv. Constanta caracter grafic se scrie incluzând caracterul respectiv între caracterul apostrof.

Exemplu: ‘A’

Intern vom avea o reprezentare pe un octet ce conţine valoarea 65 (codul ASCII al literei A).

Derivat din tipul caracter este tipul şir de caractere. Un şir de caractere este o succesiune de o sau mai multe caractere delimitate prin ghilimele. Practic, un şir de caractere este un tablou a cărui elemente sunt caractere. Ghilimelele nu fac parte din şirul de caractere. Dacă se doreşte utilizarea caracterelor negrafice în şir se utilizează construcţia cu ‘\’. Dacă în şirul de caractere se doreşte inserarea caracterului ghilimele se utilizează construcţia \”. Şirul de caractere poate fi continuat de pe o linie pe alta tastând ‘\’ înainte de enter. Intern, o constantă sau o variabilă de tip şir de caractere se reprezintă ca o succesiune de octeţi ce conţin codurile ASCII ale caracterelor din şir şi, în plus, la sfârşitul secvenţei, un octet ce conţine codul ASCII al caracterului NULL (care termină orice şir de caractere).

Leave a Reply

Your email address will not be published. Required fields are marked *

fourteen + 5 =

Time limit is exhausted. Please reload CAPTCHA.