Tipuri de date (int, char, double) în C

Tipurile de bază din C: întregi (char, short, int, long, long long), cu sau fără semn, și numere reale (float, double).

Sintaxă
char c = 'A';
short s; int i; long l; long long ll;   // ll: C99
unsigned int u;
float f; double d; long double ld;
bool b;                                // cuvânt cheie din C23

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 float sau double pentru bani și compari exact (==). 0.1 + 0.2 nu este exact 0.3; pentru sume de bani lucrează în bani (întregi): 4990 în loc de 49.90.
  • Presupui că long are 64 de biți peste tot. Pe Windows are 32 de biți; pentru dimensiune exactă folosește int64_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.
Comunitate & Schimb de cunoștințe

Î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.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.