bool, true, false în C

Tipul pentru valori adevărat/fals. În C23, bool, true și false sunt cuvinte cheie, fără să mai incluzi stdbool.h.

Sintaxă
bool gasit = false;
bool admis = nota >= 5;   // true sau false

Ce face bool, true, false

O variabilă bool are doar două valori: true (adevărat) și false (fals). Rezultatul unei comparații (nota >= 5) sau al unei expresii logice (a && b) se poate păstra într-un bool.

Istoric, C nu avea tip boolean: se folosea int cu 0 și 1. C99 a adăugat tipul _Bool și antetul <stdbool.h> cu macro-urile bool, true și false. În C23 acestea au devenit cuvinte cheie: merg direct, iar <stdbool.h> nu mai este necesar (se poate include în continuare, fără efect).

La conversia în bool, orice valoare diferită de zero devine true (deci 1), iar 0 devine false. printf nu are un specificator pentru bool: îl afișezi ca număr cu %d sau ca text cu b ? "da" : "nu".

Exemple

Exemplul 1: Admis sau respins

Fără niciun #include <stdbool.h>: în C23 bool, true și false există direct. sizeof(bool) este 1 pe platformele obișnuite.

#include <stdio.h>

int main(void) {
    const char *nume[] = {"Ana", "Mihai", "Ioana"};
    int note[] = {9, 4, 7};

    for (int i = 0; i < 3; i++) {
        bool admis = note[i] >= 5;
        printf("%-6s nota %2d -> %s\n", nume[i], note[i], admis ? "admis" : "respins");
    }
    printf("sizeof(bool) = %zu\n", sizeof(bool));
    return 0;
}

Rezultat

Ana    nota  9 -> admis
Mihai  nota  4 -> respins
Ioana  nota  7 -> admis
sizeof(bool) = 1

Exemplul 2: Conversia numerelor în bool

Orice număr nenul devine true (afișat ca 1), chiar și 42 sau -3. Un int ar fi păstrat valoarea originală; bool o reduce la 0 sau 1.

#include <stdio.h>

int main(void) {
    int valori[] = {0, 1, 42, -3};
    for (int i = 0; i < 4; i++) {
        bool b = valori[i];
        printf("%3d -> %d\n", valori[i], b);
    }
    printf("true + true = %d\n", true + true);
    return 0;
}

Rezultat

  0 -> 0
  1 -> 1
 42 -> 1
 -3 -> 1
true + true = 2

Exemplul 3: Funcție care returnează bool

O funcție care răspunde „da” sau „nu” returnează bool. Bucla se oprește la primul număr par găsit, cu ajutorul variabilei gasit.

#include <stdio.h>

static bool este_par(int n) {
    return n % 2 == 0;
}

int main(void) {
    int stocuri[] = {7, 13, 20, 5};
    bool gasit = false;
    for (int i = 0; i < 4 && !gasit; i++) {
        if (este_par(stocuri[i])) {
            printf("Primul stoc par: %d (poziția %d)\n", stocuri[i], i);
            gasit = true;
        }
    }
    if (!gasit) {
        printf("Niciun stoc par\n");
    }
    return 0;
}

Rezultat

Primul stoc par: 20 (poziția 2)

Greșeli frecvente

  • Compari explicit cu true: if (gasit == true). Pentru un bool merge, dar pentru un int folosit ca boolean (de exemplu 2) comparația este falsă. Scrie simplu if (gasit).
  • Te aștepți ca bool să afișeze „true” cu printf. Nu există %b pentru asta; folosește %d sau operatorul ?:.
  • Compilezi cod C23 cu un standard mai vechi (-std=c11): acolo bool există doar după #include <stdbool.h>. Dacă proiectul trebuie să meargă și cu C99/C11, păstrează includerea.

Comenzi înrudite

  • Operatori de comparație și logici (== && || ! ?:): Compară valori și combină condiții: rezultatul este 1 (adevărat) sau 0 (fals); && și || se opresc cât mai devreme.
  • if / else: Execută un bloc de cod doar dacă o condiție este adevărată, cu ramuri alternative pentru celelalte cazuri.
  • Tipuri de date (int, char, double): Tipurile de bază din C: întregi (char, short, int, long, long long), cu sau fără semn, și numere reale (float, double).
  • nullptr: Constanta C23 pentru pointerul nul, cu tip propriu (nullptr_t), mai sigură decât NULL sau 0.
  • printf: Afișează text formatat pe ecran: un șablon cu specificatori (%d, %s, %.2f) completați cu valorile primite după el.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: bool, true, false

Ai o nelămurire despre utilizarea comenzii bool, true, false 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.