Ce face Tipuri de date (int, char, double)
C are puține tipuri de bază. Pentru numere întregi: char, short, int, long și long long. Fiecare are și o variantă unsigned (fără semn), care nu poate ține valori negative, dar ajunge mai sus. Pentru numere reale: float (aproximativ 7 cifre exacte), double (aproximativ 15–16 cifre) și long double.
Standardul fixează doar dimensiuni minime: int are cel puțin 16 biți, long cel puțin 32, long long cel puțin 64. Pe calculatoarele de azi, int are aproape mereu 32 de biți. Dacă ai nevoie de o dimensiune exactă, folosește tipurile din stdint.h (int32_t, uint8_t).
char ține un octet: o literă din alfabetul ASCII sau un număr mic. Literele românești (ă, ș, ț) ocupă în UTF-8 câte doi octeți, deci nu încap într-un singur char. Din C23, bool, true și false sunt cuvinte cheie, fără #include <stdbool.h>.
Exemple
Exemplul 1: Variabile de tipuri diferite
Fiecare tip are specificatorul lui în printf: %c pentru caracter, %d pentru int, %ld pentru long, %f pentru double. %.2f afișează două zecimale.
#include <stdio.h>
int main(void) {
char nota_litera = 'A';
int varsta = 21;
long populatie_iasi = 271692L;
double pret = 49.90;
bool activ = true;
printf("Calificativ: %c\n", nota_litera);
printf("Vârstă: %d ani\n", varsta);
printf("Populație: %ld\n", populatie_iasi);
printf("Preț: %.2f lei\n", pret);
printf("Activ: %d\n", activ);
return 0;
}
Rezultat
Calificativ: A
Vârstă: 21 ani
Populație: 271692
Preț: 49.90 lei
Activ: 1
Exemplul 2: Un char este de fapt un număr
Un caracter între apostrofuri este codul lui numeric. 'A' are codul 65, iar 'A' + 2 este 67, adică 'C'.
#include <stdio.h>
int main(void) {
char litera = 'A';
printf("%c are codul %d\n", litera, litera);
char alta = litera + 2;
printf("%c are codul %d\n", alta, alta);
return 0;
}
Rezultat
A are codul 65
C are codul 67
Exemplul 3: float vs. double: precizia
Același număr păstrat în float pierde cifre după a șaptea; double ține mult mai multe. De aceea, pentru calcule obișnuite se folosește double.
#include <stdio.h>
int main(void) {
float f = 1234567.891f;
double d = 1234567.891;
printf("float: %.3f\n", f);
printf("double: %.3f\n", d);
return 0;
}
Rezultat
float: 1234567.875
double: 1234567.891
Greșeli frecvente
- Folosești
floatsaudoublepentru bani și compari exact (==).0.1 + 0.2nu este exact0.3; pentru sume de bani lucrează în bani (întregi): 4990 în loc de 49.90. - Presupui că
longare 64 de biți peste tot. Pe Windows are 32 de biți; pentru dimensiune exactă foloseșteint64_t. - Pui o literă cu diacritice într-un
char(char c = 'ș';). În UTF-8, „ș” are doi octeți; folosește un șir:"ș".
Comenzi înrudite
sizeof: Operatorul care spune câți octeți ocupă un tip sau o variabilă; calculat de compilator, rezultatul are tipul size_t.stdint.h și limits.h: Tipuri întregi cu dimensiune exactă (int32_t, uint8_t) și constantele cu valorile minime și maxime ale tipurilor (INT_MAX).Conversii și cast: Conversiile automate dintre tipuri și cum forțezi o conversie cu (tip): de exemplu împărțire cu zecimale între două întregi.Specificatori de format (%d, %f, %s): Ce înseamnă %d, %u, %f, %e, %s, %c, %x, %zu și cum controlezi lățimea, zecimalele și alinierea în printf.bool, true, false: Tipul pentru valori adevărat/fals. În C23, bool, true și false sunt cuvinte cheie, fără să mai incluzi stdbool.h.
Întrebări & Exemple de Cod:
Tipuri de date (int, char, double)Ai o nelămurire despre utilizarea comenzii
Tipuri de date (int, char, double)sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.