bool, true, false în C++

Tipul logic: o variabilă bool are doar două valori, true (adevărat) sau false (fals).

Sintaxă
bool nume = true;   // sau false

Ce face bool, true, false

bool ține răspunsul la o întrebare de tip da/nu: „este utilizatorul autentificat?”, „mai e stoc?”. Valorile sunt cuvintele cheie true și false. Comparațiile (<, ==, !=) și operatorii logici (&&, ||, !) dau un bool.

Un bool se transformă în număr ca 1 (true) sau 0 (false). Invers, orice număr diferit de 0 devine true, iar 0 devine false; un pointer nenul devine true.

std::println afișează true/false, dar std::cout afișează 1/0, dacă nu folosești std::boolalpha.

Exemple

Exemplul 1: Condiții salvate în variabile bool

#include <print>

int main() {
    int varsta = 19;
    bool major = varsta >= 18;
    bool are_permis = false;
    std::println("Major: {}", major);
    std::println("Poate conduce: {}", major && are_permis);
    std::println("Nu are permis: {}", !are_permis);
}

Rezultat

Major: true
Poate conduce: false
Nu are permis: true

Exemplul 2: bool ca număr și numere ca bool

#include <print>

int main() {
    std::println("true + true = {}", true + true);
    bool din_numar = static_cast<bool>(42);
    bool din_zero = static_cast<bool>(0);
    std::println("42 -> {}, 0 -> {}", din_numar, din_zero);
    int stoc = 3;
    if (stoc) {
        std::println("Mai avem produse în stoc");
    }
}

Rezultat

true + true = 2
42 -> true, 0 -> false
Mai avem produse în stoc

Exemplul 3: cout afișează 1 și 0

Cu std::cout, un bool apare ca număr până când activezi std::boolalpha.

#include <iostream>

int main() {
    bool platit = true;
    std::cout << "Plătit: " << platit << '\n';
    std::cout << std::boolalpha << "Plătit: " << platit << '\n';
}

Rezultat

Plătit: 1
Plătit: true

Greșeli frecvente

  • Scrii if (x = 5) în loc de if (x == 5). Atribuirea dă 5, adică true, deci condiția e mereu adevărată. Compilatoarele avertizează; citește avertismentele.
  • Compari cu true: if (gata == true). Merge, dar este redundant; scrie if (gata) și if (!gata).

Comenzi înrudite

  • if, else: Execută un bloc de cod doar dacă o condiție este adevărată; else oferă varianta pentru cazul contrar.
  • and, or, not și ceilalți operatori alternativi: Cuvinte care pot înlocui simbolurile unor operatori: and pentru &&, or pentru ||, not pentru !, bitand pentru & și altele.
  • int: Tipul de bază pentru numere întregi (fără zecimale), de obicei pe 4 octeți, cu valori între aproximativ -2,1 și 2,1 miliarde.
  • while: Repetă un bloc de cod cât timp condiția este adevărată; condiția este verificată înainte de fiecare trecere.
  • std::boolalpha: Afișează și citește valorile bool ca true/false în loc de 1/0.